Дайте следующую попытку - не могу обещать, что приведенное ниже будет точным, но должно привести вас в правильном направлении.
Первое, что вы хотите сделать, это иметь согласованный Jenkinsfile для каждого из репозиториев. Теперь вы можете сделать это различными способами, но один из способов сделать это - использовать внешние конвейеры Groovy, чтобы логика поддерживалась согласованной для всех репозиториев. Пример этого находится здесь . . Копирование Jenkinsfile через каждое из репозиториев также будет работать, однако лучше использовать один источник правды.
node{
deleteDir()
git env.flowScm
def flow = load 'pipeline.groovy'
stash includes: '**', name: 'flowFiles'
stage 'Checkout'
checkout scm // short hand for checking out the "from scm repository"
flow.runFlow()
}
Если файл pipe.groovy будет содержать фактический конвейер, будет выглядеть так:
def runFlow() {
// your pipeline code
}
// Has to exit with 'return this;' in order to be used as library
return this;
После того как каждый из ваших триггеров использует одну и ту же конвейерную логику, вы можете воспользоваться командой 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')
}
Соединение двух шагов должно достичь того, что вам нужно в этом случае.