一.简介

when指令允许pipeline根据给定的条件,决定是否执行阶段内的步骤。when指令必须至少包含一个条件。when指令除了支持branch判断条件,还支持多种判断条件。

如下使用

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

二.选项

单独判断

changelog :如果版本控制库的changelog符合正则表达式,则执行

when {
changelog '.*^\\[DEPENDENCY\\] .+$'
}

changeset :如果版本控制库的变更集合中包含一个或多个文件符合给定的Ant风格路径表达式,则执行

when {
changeset "**/*.js"
}

environment :如果环境变量的值与给定的值相同,则执行

when {
environment name: 'DEPLOY_TO', value: 'production'
}

equals :如果期望值与给定的值相同,则执行

when {
equals expected: 2, actual: currentBuild.number
}

expression :如果Groovy表达式返回的是true,则执行。当表达式返回的是字符串时,它必须转换成布尔类型或null ;否则,所有的字符串都被当作true处理。

when {
expression {
return env.BRANCH_NAME != 'master';
}
}

buildingTag :如果pipeline所执行的代码被打了tag,则执行

when {
buildingTag()
}

tag:如果pipeline所执行的代码被打了tag,且tag名称符合规则,则执行。如果tag的参数为空,即tag ( ),则表示不论tag名称是什么都执行,与buildingTag的效果相同。

when {
tag "release-*"
}

tag条件支持comparator参数,支持的值如下。

EQUALS:简单的文本比较

when {
tag pattern "release-3.1", comparator: "EQUALS"
}

GLOB(默认值) :Ant风格路径表达式。由于是默认值,所以使用时一般省略。

when {
tag pattern "release-*", comparator: "GLOB"
}

REGEXP∶正则表达式

when {
tag pattern "release-\\d+", comparator: "REGEXP"
}

条件组合

以上介绍的都是单条件判断,when指令还可以进行多条件组合判断。

allOf :所有条件都必须符合。下例表示当分支为master且环境变量DEPLOY_TO的值为production时,才符合条件。注意,多条件之间使用分号分隔。

when {
anyof {
branch 'master';
environment name: 'DEPLOY_TO', value: 'production'
}
}

anyOf:其中一个条件为true,就符合。下例表示master分支或staging分支都符合条件。

when {
anyof {
branch 'master';
branch 'staging'
}
}

最新文章

  1. SpringMVC org.xml.sax.SAXParseException: cvc-complex-type.2.4.c 报错处理方式
  2. Eclipse 增加php插件
  3. 重温JSP学习笔记--与日期数字格式化有关的jstl标签库
  4. discuz mysqli_connect() 不支持 advice_mysqli_connect
  5. 6、UITableView表的分割线左对齐
  6. 在Android界面特效中如何做出和墨迹天气及UC中左右拖动的效果
  7. PAC学习框架
  8. php session跨页面传递 session值丢失问题
  9. [Django_1_0]初次见面
  10. iOS 语音识别使用讯飞报错
  11. android*API19
  12. 提高duilib的richedit控制的一些特征
  13. PyQt4 的部件 -- CheckBox 单选框
  14. HTML 5 <canvas> 标签
  15. Django_xamin注册model错误
  16. springMVC源码分析--@SessionAttribute用法及原理解析SessionAttributesHandler和SessionAttributeStore
  17. Hugo + Github Pages 搭建个人博客
  18. Qt编写自定义控件2-进度条标尺
  19. underscore.js源码解析【函数】
  20. HTML 换行

热门文章

  1. Android Activity Deeplink启动来源获取源码分析
  2. 【备忘】下载Oracle 8u202及之前的商用免付费版本JDK
  3. [cf1458D]Flip and Reverse
  4. Cortex-A系列中断
  5. AOP实现方式二
  6. 多线程02.继承Thread类
  7. [源码解析] PyTorch 分布式(12) ----- DistributedDataParallel 之 前向传播
  8. 关于Jmeter线程组的设置,看这一篇就够了
  9. CentOS7部署ceph
  10. 雪花算法对System.currentTimeMillis()优化真的有用么?