Jenkinsfile - 一种跳过整个管道的方法?

fdu*_*uff 3 jenkins-pipeline

我使用声明性语法来开发(多分支)管道脚本,并且我正在寻找一种方法来根据某些条件跳过整个管道,而不必when在每个阶段都修改。

当前用例:我正在设置一个cron在晚上触发构建,但我只想说分支release/v1develop在晚上通过管道,而不是其他十几个分支。

triggers {
  cron('H 21 * * 1-5')
}

// SKIP PIPELINE if triggered by timer AND branch not 'release/v1' OR 'develop'

stages {
  stage('build') {
    when { ... }
  }
  stage('UT') {
    when { ... }
  }
etc...
}
Run Code Online (Sandbox Code Playgroud)

任何提示将不胜感激。

Sil*_*Nak 6

如果您拥有管道定义插件 1.3 或更高版本 ( changelog ) ,则可以嵌套阶段。

使用它,您可以将整个工作嵌套在父阶段中,并在父阶段使用 when 指令。如果跳过父阶段,将跳过所有子阶段。下面是一个例子:

pipeline {
    agent any
    stages {
        stage('Parent') {
            when {
                //...
            }
            stages {
                stage('build') {
                    steps {
                        //..
                    }
                }
                stage('UT') {
                    steps {
                        //...
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Bruce 2018 年的官方公告在这里:https://www.jenkins.io/blog/2018/07/02/whats-new-declarative-piepline-13x-sequential-stages/ (2认同)