Используя трубопровод Дженкинса для проверки нескольких репозиторий git в одну и ту же работу
Я использую плагин Jenkins Multiple SCM, чтобы проверить три хранилища git на три подкаталога в моей работе Jenkins. Затем я выполняю один набор команд для создания одного набора артефактов с информацией и кодом, взятым из всех трех репозиториев.
Несколько SCM теперь амортизируются, и текст рекомендует переходить на конвейеры. Я попытался, но я не могу понять, как заставить его работать.
Вот структура каталогов, которую мне интересно видеть на верхнем уровне моего каталога заданий Jenkins:
$ ls
Combination
CombinationBuilder
CombinationResults
Каждый из этих трех подкаталогов имеет один репозиторий git. С помощью нескольких SCM я использовал git, а затем добавил поведение "checkout to the subdirectory". Вот моя попытка с конвейером script:
node('ATLAS && Linux') {
sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
sh('cd CalibrationResults')
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
sh('cd ..')
sh('[ -e Combination ] || mkdir Combination')
sh('cd Combination')
git url: 'https://github.com/AtlasBID/Combination.git'
sh('cd ..')
sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
sh('cd CombinationBuilder')
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
sh 'cd ..'
sh('ls')
sh('. CombinationBuilder/build.sh')
}
Однако команда git, кажется, выполняется в каталоге верхнего уровня рабочей области (что имеет смысл), и в соответствии с синтаксисом тоже не похоже на checkout-to-sub-directory поведение.
Ответы
Ответ 1
Вы можете использовать команду dir
для выполнения шага конвейера в подкаталоге:
node('ATLAS && Linux') {
dir('CalibrationResults') {
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
}
dir('Combination') {
git url: 'https://github.com/AtlasBID/Combination.git'
}
dir('CombinationBuilder') {
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
}
sh('ls')
sh('. CombinationBuilder/build.sh')
}