#jenkins #jenkins-pipeline
#дженкинс #дженкинс-трубопровод
Вопрос:
На данный момент у меня есть два проекта с несколькими заданиями для одного репозитория:
- Сначала выполняется на
develop
ветке - Второй выполняется для всех открытых запросов на извлечение
В каждом из них много вложенных заданий в стиле Freestyle.Они совершенно разные.
Я рассматриваю возможность перехода на конвейер как код с помощью Jenkinsfile. Итак мой вопрос в том, есть ли способ переключить путь / имя файла Jenkins на основе, скажем, названия ветки. Я пытался использовать многоотраслевой тип задания конвейера, но он позволяет задать только один путь к файлу Jenkins и использует его в любой ветке, включая PullRequests.
Может быть, есть лучший способ добиться этого? Я открыт для обсуждения. Спасибо
Ответ №1:
Вы можете сделать это в одном файле jenkins, используя выражение when, я предполагаю, что ваш конвейер не совсем большой
pipeline {
agent any
stages {
stage("Set variables from external input") {
when {
branch "develop"
}
steps{
#add the thing which you want execute when branch is develop
}
}
stage("2 for Pull request") {
when {
expression {return !env.GIT_BRANCH.contains('master|develop')}
}
steps{
#add the thing which you want execute when branch is pull request
}
}
}
}
Комментарии:
1. Можно ли сделать название ветки динамическим для PR? Имеется в виду любая ветвь, которая не является
develop
илиmaster
?