Jenkinsfile с двумя репозиториями git

Я использую плагин конвейера Дженкинса с файлом Jenkinsfile.

в одном репозитории, называемом vms.ГИТ, у меня Jenkinsfile и приложение его строит.

У меня есть другой репозиторий под названием deploy.git, который содержит скрипты, которые я хочу использовать для развертывания приложения в vms.мерзавец.

на данный момент мой Jenkinsfile просто выглядит так

node {
  stage 'build'
  checkout scm

и я определяю vms.git repo в конфигурации задания.

Так что я хотелось бы сделать, это проверить оба репозитория, а затем использовать Jenkinsfile в vms.git, чтобы определить остальную часть сборки. Я хочу повторно использовать развертывание.git-скрипты в других конвейерах, поэтому я не хочу помещать туда файл Jenkinsfile.

2 ответов


вы можете проверить несколько каталогов, используя checkout, но вы должны указать каталог, где вы хотите проверить это. Вы можете генерировать фрагменты с помощью jenkins (Snippet generator bellow script field). Выберите checkout, следующий репозиторий git и в дополнительных поведениях выберите: checkout в подкаталог.

когда у вас будет 2 репозитория, вы можете загрузить скрипт из репозитория, который вы хотите использовать load. Пример:

node {
    // first repository
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory1']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo1.git']]])
    // second repository
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory2']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo2.git']]])
    // run first script
    load 'subdirectory1/Jenkinsfile'
    // run second script
    load 'subdirectory2/Jenkinsfile'
}

еще одно элегантное решение для обработки нескольких репозиториев Git в одном конвейере можно найти в этой теме.

node {
    dir('RepoOne') {
        git url: 'https://github.com/somewhere/RepoOne.git'
    }
    dir('RepoTwo') {
        git url: 'https://github.com/somewhere/RepoTwo.git'
    }

    sh('. RepoOne/build.sh')
    sh('. RepoTwo/build.sh')
}