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

2cmtqfgy  于 2022-12-11  发布在  Jenkins
关注(0)|答案(3)|浏览(246)

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

mklgxw1f

mklgxw1f1#

这听起来像是您将Jenkinsfile与代码放在一起,但希望从管理的Angular 更改Jenkinsfile的运行方式。
可以将此阶段存储在单独的(版本控制风格的首选项)资料档案库中。在执行阶段之前,先加载资料档案库,然后加载脚本文件,并在阶段中执行该文件中定义的方法。
或者,向构建作业添加一个参数(假设您没有通过Jenkinsfile中的选项设置参数),该参数是一个布尔值,您可以使用或跳过该阶段,并且可以在想要打开或关闭该阶段时修改项目配置

insrf1ej

insrf1ej2#

这种方法怎么样?

stage('build') { 

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

构建标志可以是

  • 同一管道中的简单VAR
  • 在jenkins中配置的全局变量。您可以临时设置disabled以跳过build阶段,并更改为enabled以恢复正常状态

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

currentBuild.result = 'FAILURE'

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

oewdyzsn

oewdyzsn3#

一个选项是在符合条件时略过阶段主体。例如:

stage('Unit Tests') {
    steps {
      script{
        if (env.branch.startsWith(releaseBranch)} {
           echo 'Running unit tests with coverage...'
        } else {
           // run actual unit tests
        }
      }
    }
  }

唯一的缺点是UI将显示此步骤的“绿色框”-即使它实际上什么也没做。
如果要完全删除分支的阶段,请使用when指令。

stage('deploy') {
        when {
            branch 'production'
        }
        steps {
            echo 'Deploying'
        }
 }

额外的好处:你也可以指定一个“when not”指令。

相关问题