Я хотел бы выполнить определенный шаг в декларативном конвейере Jenkins, только если данная сборка не является функциональной ветвью или запросом на вытягивание, чтобы эта стадия запускалась во всех других ветвях и запросах на вытягивание.
В нашем случае функциональная ветка начинается с префикса feature/
и, согласно этой вики-страницы Jenkins , запросы на вытягивание могут быть определены с помощью переменной среды CHANGE_ID
, которая заполняется только для запросов на вытягивание. .
Основываясь на этом, я придумал следующий подход:
stage("My stage") {
when {
expression {
boolean isPullRequest = env.CHANGE_ID
boolean isFeatureBranch = env.BRANCH_NAME ==~ 'feature/.*'
return isPullRequest || !isFeatureBranch
}
}
steps {
// Do something
}
}
Интересно (а) правильно ли это и (б) есть ли более краткий способ делаете это?