При использовании декларативного синтаксиса есть ли способ избежать отдельных этапов для каждого условия «когда»?

#jenkins-pipeline

#дженкинс-трубопровод #дженкинс-конвейер

Вопрос:

Есть ли способ избежать создания отдельного этапа для каждого условного оператора «когда» ? Другими словами, в приведенном ниже примере команда maven точно такая же для двух ветвей, за исключением одного параметра.

Итак, есть ли более простой способ создать один этап под названием «maven build» с условным выполнением на основе создаваемой ветви. Помимо утомительного дублирования, побочным эффектом этого является то, что в Jenkins вид «сцена» становится все длиннее и длиннее.

        pipeline{
       :
       :
       stage('Maven Build (develop)'){
        when{
            branch 'develop'
        }
         steps {
                // Do these steps 
              }
          }

    stage('Maven Build (release)'){
        when{
            branch 'releases/**'
        }
          steps {
                // Do same steps as in the previous Maven Build but 
                // with a minor change. 
          }
        }
       }
  

Ответ №1:

 pipeline {

    stage('Maven build') {
        steps {
            echo "Build on branch ${env.GIT_BRANCH}"
            // do the same steps

            script {
                if(env.GIT_BRANCH.startsWith("releases")) {
                    // do the diff steps only for non-develop branch
                }
            }
        }
    }
}
  

Комментарии:

1. Это env.BRANCH_NAME в моем Дженкинсе /pipeline-syntax/globals