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')
}