当前位置: 首页 > 面试题库 >

Jenkins管道中的条件步骤/阶段

吕永嘉
2023-03-14
问题内容

仅在构建特定分支时,如何运行构建步骤/阶段?

例如,仅在调用分支的情况下才运行部署步骤deployment,而其他所有都保持不变。


问题答案:

在声明性管道语法中执行相同的操作,以下是一些示例:

stage('master-branch-stuff'){
  agent any
  when{
    branch 'master'
  }
  steps {
    echo 'run this stage - ony if the branch = master branch'
  }
}



stage('feature-branch-stuff') {
    agent label:'test-node'
    when { branch "feature/*" }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}



stage('expression-branch') {
    agent label:'some-node'
    when {
    expression {
        return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}



stage('env-specific-stuff') {
    agent label:'test-node'
    when { 
      environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

出现更有效的方法-https: //issues.jenkins-
ci.org/browse/JENKINS-41187

另请 参阅-
https://jenkins.io/doc/book/pipeline/syntax/#when

更新
新的条款
参考:https :
//jenkins.io/blog/2018/04/09/whats-in-
declarative

等于-比较两个值-字符串,变量,数字,布尔值-如果相等,则返回true。老实说,我不确定我们怎么会错过之前添加的内容!您也可以使用not {equals
…}组合进行“不等于”比较。

changeRequest-
以最简单的形式,如果此管道正在构建更改请求(例如GitHub拉取请求),则将返回true。您还可以针对变更请求进行更详细的检查,从而允许您询问“这是针对master分支的变更请求吗?”
以及更多。

buildingTag-一个简单的条件,仅检查Pipeline是否针对SCM中的标记而不是针对分支或特定的提交引用而运行。

标签-更详细的等效于buildingTag的标签,可让您检查标签名称本身。



 类似资料:
  • 仅当构建特定分支时,如何运行构建步骤/阶段? 例如,仅当分支被称为时才运行部署步骤,其他操作保持不变。

  • 我正在将在UI中配置的Jenkins作业转换为使用声明性管道脚本配置的作业。 这是一个maven构建的Java项目,具有部署到Artifactory的构建后操作 构建和测试步骤很简单。我们可以使用这个UI 并将其转换为mvn命令。 构建后步骤的配置在UI中很简单 选中了三个文本框 部署maven工件 过滤器从构建信息中排除了工件(我不认为有任何) 捕获并发布构建信息 这会生成并上传丰富的build

  • 在Jenkins管道中,我使用构建步骤触发其他几个作业,并向其传递一些参数。除了管道之外,我在可视化我触发的不同工作时遇到了问题。我已经设置了Jenkins Delivery Pipeline插件,但是它的文档非常模糊,我只能可视化管道中的步骤,尽管用阶段和任务名称标记作业。 例子: 我在Jenkins中有两个作业作为管道/工作流作业,具有以下管道脚本: 工作坊: 作业栏: 我如何使它也显示在工作

  • 问题内容: 我正在尝试在前一个阶段周围使用try / catch来复制Jenkins管道中条件阶段的等效内容,然后在该阶段之前设置一个成功变量,该变量用于触发条件阶段。 看起来,尝试catch块是可行的方法,将成功var设置为SUCCESS或FAILED,这将在以后的when语句中用作条件语句(作为条件阶段的一部分)。 我使用的代码如下: 我收到的最新语法错误如下: 我也尝试了很多变化。 我在这里

  • Jenkins版本=2.19 Jenkins多分支管道插件版本=2.92 我有一个Jenkinsfile,其中有一些基于分支的条件阶段。 为了简洁起见,这是我的Jenkinsfile的修改版本: 我正在使用多分支管道插件。 它成功地检测并构建了我所有的分支。 我的问题是,所有构建报告为失败,即使我悬停每个阶段,它报告'成功'。 我附上了一张图片,显示了一个功能分支,其中我想要运行的两个阶段已经运行