根据其他答案,我添加了平行阶段场景:
pipeline {
agent any
stages {
stage('some parallel stage') {
parallel {
stage('parallel stage 1') {
when {
expression { ENV == "something" }
}
steps {
echo 'something'
}
}
stage('parallel stage 2') {
steps {
echo 'something'
}
}
}
}
}
}
只需使用if
和env.BRANCH_NAME
,例如:
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}
在声明式管道语法中执行同样的操作,下面是一些示例:
stage('master-branch-stuff') {
when {
branch 'master'
}
steps {
echo 'run this stage - ony if the branch = master branch'
}
}
stage('feature-branch-stuff') {
when {
branch 'feature/*'
}
steps {
echo 'run this stage - only if the branch name started with feature/'
}
}
stage('expression-branch') {
when {
expression {
return env.BRANCH_NAME != 'master';
}
}
steps {
echo 'run this stage - when branch is not equal to master'
}
}
stage('env-specific-stuff') {
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
如果条件不需要git状态来决定是否运行,可以设置指令beforeAgent true
,以避免启动代理来运行条件:
when { beforeAgent true; expression { return isStageConfigured(config) } }
发布帖子和文档
UPDATE
New WHEN子句
REF:https://jenkins.io/blog/2018/04/09/whats-in-declarative
equals——比较两个值——字符串、变量、数字、布尔值——如果它们相等,则返回true。我真的不确定我们怎么会错过之前添加的内容!您可以使用not{equals…}进行“not equals”比较组合也是。
变更请求——以最简单的形式,如果该管道正在构建变更请求,例如GitHub拉取请求,这将返回true。您还可以对变更请求进行更详细的检查,允许您询问“这是针对主分支的变更请求吗?”等等。
buildingTag——一个简单的条件,只检查管道是否针对SCM中的标记运行,而不是分支或特定的提交引用。
标签-一个更详细的等价于BuildingTag,允许您检查标签名称本身。
问题内容: 仅在构建特定分支时,如何运行构建步骤/阶段? 例如,仅在调用分支的情况下才运行部署步骤,而其他所有都保持不变。 问题答案: 在声明性管道语法中执行相同的操作,以下是一些示例: 出现更有效的方法-https: //issues.jenkins- ci.org/browse/JENKINS-41187 另请 参阅- https://jenkins.io/doc/book/pipeline/
我正在将在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的修改版本: 我正在使用多分支管道插件。 它成功地检测并构建了我所有的分支。 我的问题是,所有构建报告为失败,即使我悬停每个阶段,它报告'成功'。 我附上了一张图片,显示了一个功能分支,其中我想要运行的两个阶段已经运行