Jenkins基础:Jenkinsfile使用实例:5:使用when进行条件分支处理

本文介绍了如何在Jenkinsfile中使用when{}进行条件分支处理,包括expression、environment和equals等内建条件类型的示例。通过具体的Jenkinsfile代码,展示了如何控制不同阶段(如Build、Test、Deploy)的执行,强调了when{}必须写在stage块中,并且解释了environment变量的声明位置和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何根据指定的条件进行不同的逻辑处理,这是很多场景中需要碰到的情况。将Pipeline封装成很多条不需要考虑逻辑的多条流水线的做法,在分支逻辑稍微复杂的情况下变得完全不具有可操作性,在这篇文章中将会结合使用示例介绍如何在Jenkinsfile进行条件分支的处理。

when{}

根据给定条件决定实际的分支处理逻辑,可以考虑在Jenkinsfile中使用when{}来达到这一目的。在本文中将仅仅介绍最为简单的逻辑分支处理方式,至于嵌套和多层逻辑处理将在后续的文章中进一步地展开。

  • 使用限制:需要写在stage块中
  • 可选vs必选:可选

内建条件类型

when所支持内建条件类型非常丰富,详细如下所示

内建条件类型 使用说明 备注
branch 指定分支构建时触发 仅对于多分支Pipeline有效
buildingTag 构建tag时触发 -
changelog SCM的变更日志包含指定内容时触发 常与正则表达式结合使用
changeset SCM的changeset包含指定文件时触发 常与*等表达式结合使用,缺省状态是不区分大小写的,但是可以通过指定caseSensitive为true来达到区分大小写的目的
changeRequest 变更请求发生时触发(比如Github的Pull Request、Gitlab的Merge Request以及Gerrit的变更等) 如未指定参数则标明每次变更请求都会被触发,分支信息/标题/author/邮件地址等都可以作为参数传入,从而限制只有这些信息被匹配的时候才会发生触发。同时还可以与正则表达式结合使用。
environment 当某环境变量被设定为某特定值时会被触发 -
equals 某变量与期待值相等时被触发 -
expression 表达式为true时被触发 注意返回的字符串必须转化为布尔类型才能正确动作。
tag TAG_NAME变量满足匹配模式时会被触发 -
not 当条件为false时会被触发 -
allOf 当所有嵌套条件均为true时会被触发 至少包含一个条件
anyOf 嵌套条件中至少有一个为true时会被触发 至少包含一个条件
triggeredBy 当前构建为指定方式所触发时 触发方式为:SCMTrigger/TimerTrigger/UpstreamCause等。

环境准备

本文使用Easypack的LTS Jenkins 2.167.1版,环境准备请参看

获取Jenkins-Crumb

使用如下示例代码获取Jenkins-Crumb,为使用API方式生成示例作准备。

liumiaocn:jenkins liumiao$ jenkins_host_url=http://localhost:32002
liumiaocn:jenkins liumiao$ user_passwd="root:liumiaocn"
liumiaocn:jenkins liumiao$ jenkins_crumb=`curl -u $user_passwd ${
    jenkins_host_url}'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)' 2>/dev/null`
liumiaocn:jenkins liumiao$ echo $jenkins_crumb
Jenkins-Crumb:83d748ee92512c4dccd589aaa5c55a9a
liumiaocn:jenkins liumiao$

创建Job

使用如下代码示例创建Job

liumiaocn:jenkins liumiao$ ls demo/pipeline/when/config.xml
demo/pipeline/when/config.xml
liumiaocn:jenkins liumiao$ cat demo/pipeline/when/config.xml
<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.32"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值