Одиночный декларативный конвейер Jenkins, если не работает условие ветвления - PullRequest
0 голосов
/ 06 сентября 2018

Использование одного декларативного конвейера (не многоотраслевого конвейера)

Есть ли способ, которым я могу запустить определенную стадию, только если она является главной ветвью?

Мне не удалось выполнить следующее:

Stage('Deploy') {
    steps {
        script {
            if (env.BRANCH_ENV == 'master') {
                sh "mvn deploy"
            } else {
                echo 'Ignoring'
            }
        }
    }
}

Независимо от того, какую ветку я развертываю, все игнорируется

любая помощь или совет будут великолепны

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вот несколько подходов:

используйте команду возврата, чтобы досрочно завершить этап

https://stackoverflow.com/a/51406870/3957754

использовать при директиве

когда директива позволяет конвейеру определить, должен ли этап выполняться в зависимости от заданного условия

встроенные условия: ветвь, выражение, allOf, anyOf, нет и т. Д.

when {
  // Execute the stage when the specified Groovy expression evaluates to true
  expression {
      return params.ENVIRONMENT ==~ /(?i)(STG|PRD)/
  }
}

Полный образец:

https://gist.github.com/HarshadRanganathan/97feed7f91b7ae542c994393447f3db4

0 голосов
/ 06 сентября 2018

У меня уже была та же проблема, и я подумал, что env.BRANCH_ENV не возвращает то, что я ожидал.Вы можете повторить env.BRANCH_ENV в вашем конвейере для подтверждения.

Моим решением было вручную получить ветку git:

scmVars = checkout scm
gitBranch = sh(
    script: "echo ${scmVars.GIT_BRANCH} | cut -d '/' -f2",
    returnStdout: true
).trim()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...