Ответ 1
В принципе вам нужно создать jenkins shared library имя примера myCoolLib
и иметь полный декларативный конвейер в одном файле в vars, скажем, вы вызываете файл myFancyPipeline.groovy
.
Хотелось написать мои примеры, но на самом деле я вижу документы довольно приятные, поэтому я буду копировать оттуда. Сначала myFancyPipeline.groovy
def call(int buildNumber) {
if (buildNumber % 2 == 0) {
pipeline {
agent any
stages {
stage('Even Stage') {
steps {
echo "The build number is even"
}
}
}
}
} else {
pipeline {
agent any
stages {
stage('Odd Stage') {
steps {
echo "The build number is odd"
}
}
}
}
}
}
а затем aJenkinsfile, который использует его (теперь имеет две строки)
@Library('myCoolLib') _
evenOrOdd(currentBuild.getNumber())
Очевидно, что здесь параметр имеет тип int, но может быть любое количество параметров любого типа.
Я использую этот подход и имею один из сценариев groovy, который имеет 3 параметра (2 строки и int) и имеет 15-20 файлов Jenkinsfiles, которые используют эту script через общую библиотеку, и это идеально. Мотивация - это, конечно, одно из самых основных правил в любом программировании (не цитата, а что-то вроде): если у вас есть "тот же код" в 2 разных местах, что-то не так.