Jenkins:如何跳过多分支管道中的特定阶段?

Jenkins: How to skip a specific stage in a multibranch pipeline?

我们所有的分支机构都有 "stage (build)"。暂时我们如何跳过这个阶段到 运行 在我们的多分支管道中的所有分支上。我知道一种解决方案是使用 when condition on stage 并要求所有开发人员将该分支拉入他们的分支。但那是大量的工作和协调。相反,我正在寻找一个全局配置,我们可以在任何分支上按名称简单地跳过该阶段。

听起来您将 Jenkinsfile 与代码放在一起,但想从管理的角度更改 Jenkinsfile 的运行方式。

您可以将这个阶段存储在一个单独的(版本控制风格的偏好)存储库中。在执行阶段之前,先加载存储库,然后加载脚本文件,然后在阶段中执行该文件中定义的方法。

或者,向构建作业添加一个参数(假设您没有通过 Jenkinsfile 中的选项设置参数),这是一个布尔值以使用或跳过该阶段,您可以在需要时修改项目配置打开或关闭它

这种方法怎么样?

  stage('build') { 

    if(buildFlag=="disable"){
      //jump to next stage
      return;
    }
    //do something
  } 

buildFlag 可以是

  • 同一管道中的一个简单变量
  • 在 jenkins 中配置的全局变量。您可以暂时设置 disabled 以跳过 build 阶段并更改为 enabled 以恢复正常 [=28] =]

您也可以将状态设置为失败,而不是 return :

currentBuild.result = 'FAILURE'

或者抛出异常并退出整个作业或管道。