Выполните этап, если переменная среды содержит определенную подстроку

#jenkins #jenkins-pipeline #jenkins-plugins

Вопрос:

У меня есть декларативный конвейер Дженкинса, в котором я заинтересован в том, чтобы иметь возможность выполнять этап только в том случае, если конкретная переменная среды содержит определенную подстроку(не полностью равна ей, просто содержит ее). У кого-нибудь есть какие-либо идеи о том, как я могу это реализовать(возможно, используя условие «когда», если это возможно).

Заранее спасибо, Алон

Ответ №1:

Как вы упомянули, в декларативном конвейере вы можете использовать директиву when для определения условия, в котором будет выполняться этап.
Среди встроенных параметров условий , таких как triggeredBy , branch и tag есть общая expression опция, которая позволяет запускать любой заводной код и вычислять соответствующее логическое значение в соответствии с вашими потребностями.
Так что, например, в вашем случае вы можете просто использовать отличные contains методы для достижения того, чего вы хотите, что-то вроде:

 pipeline {
    agent any
    stages {
        stage('Conditional Stage') {
            when {
                expression { return env.MyParamter.contains('MySubstring') }
            }
            steps {
                echo "Running the conditional stage"
            }
        }
    }
}