Короткий ответ: вы не можете сделать это с multibranch pipeline
. Многоотраслевые конвейеры предназначены только (по крайней мере, на данный момент) для выполнения определенного конвейера в стиле Pipeline script from SCM
с фиксированным Jenkinsfile
в корне проекта.
Однако вы можете использовать созданный плагин Multi-Branch Project для многоотраслевых фристайл-проектов. Во-первых, вам нужно определить свой multibranch freestyle configuration
так же, как если бы вы использовали multibranch pipeline configuration
. Выберите этот новый элемент, как показано ниже:
Этот тип конфигурации будет вести себя точно так же, как тип multibranch pipeline
, т.е. он создаст вам папку с именем вашей конфигурации и подпроектом для каждой автоматически обнаруженной ветки.
Тогда реализация должна быть простой:
- Укажите свой
SCM
репозиторий в многоотраслевой конфигурации
- Вызовите другую сборку как часть вашей сборки / пост-сборки, как и в стандартном проекте фристайла, за исключением того, что вам нужно вызвать параметризованное задание (назовем его
build-job
) и передать ему информацию о вашем репозитории, то есть URL-адрес Git и текущую ветку (для этой цели можно использовать предварительно определенные переменные $GIT_URL
и $GIT_BRANCH
)
- В вашем
build-job
просто определите либо встроенный конвейер, либо сценарий конвейера, извлеченный из SCM, а внутри этого сценария выполните проверку SCM и продолжайте шаги, которые вам нужно построить. Пример содержимого build-job
конвейера:
.
node() {
stage 'Checkout'
checkout scm: [$class: 'GitSCM', branches: [[name: '*/${GIT_BRANCH}']], userRemoteConfigs: [[url: '${GIT_URL}']]]
stage 'Build'
// Build steps...
}
Конечно, если к вашим различным мультиотраслевым проектам нужно относиться немного по-другому, вы также можете использовать промежуточные проекты (скажем, build-project-A
, build-project-B
, ...), которые, в свою очередь, будут вызывать общий build-job
конвейер)
Одним из основных недостатков этого решения является то, что у вас будет только одно задание, отвечающее за все ваши сборки, что затрудняет отладку. В случае успеха / ошибки ваши многоотраслевые проекты по-прежнему будут синими / красными, но вам придется вернуться к названию build-job
, чтобы найти реальную проблему вашей сборки.
person
Pom12
schedule
24.08.2016