一.简介

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'
}
}

pipeline when指令的更多相关文章

  1. pipeline parameters指令

    目录 一.简介 二.类型 参数类型 多参数 一.简介 参数化pipeline是指通过传参来决定pipeline的行为.参数化让写pipeline就像写函数,而函数意味着可重用.更抽象.所以,通常使用参 ...

  2. pipeline option指令

    目录 一.简介 二.参数 buildDiscarder checkoutToSubdirectory disableConcurrentBuilds newContainerPerStage retr ...

  3. pipeline post指令

    目录 一.介绍 二.参数说明 三.使用实例 一.介绍 post步骤包含的是在整个pipeline或阶段完成后一些附加的步骤.post步骤是可选的,所以并不包含在声明式pipeline最简结构中,但这并 ...

  4. Docker的Jenkins Pipeline工作流

    原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...

  5. Pipeline 有什么好处,为什么要用 pipeline?

    答:可以将多次 IO 往返的时间缩减为一次,前提是 pipeline 执行的指令之间没有 因果相关性.使用 redis-benchmark 进行压测的时候可以发现影响 redis 的 QPS 峰值的一 ...

  6. 面试中程序员常见的Redis"刁难"问题,值得一读!

    导读 在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,总结了面试过程中经常问到的问题.十分值得一读. Redis有哪些数据结构? 字符 ...

  7. Redis考察点解析

    目录 1. Redis数据结构 1. 常用数据结构 2. 高级数据结构 2. Redis分布式锁 1. Redis分布式锁原理 2. 如果在setnx之后执行expire之前进程意外crash或者要重 ...

  8. Redis面试刁难大全

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MzQyMTYzOQ==&mid=2247483686&idx=1&sn=18dfa0fd08b ...

  9. Redis缓存相关问题总结

    使用缓存是系统性能优化的第一黄金法则. 缓存的设计和使用对一个系统的性能至关重要,平时接触到项目无论多少也都会在某些层面用到缓存,比如用HashMap实现,Ehcache,memcached.redi ...

随机推荐

  1. 跟着老猫来搞GO-容器(1)

    前期回顾 前面的一章主要和大家分享了GO语言的函数的定义,以及GO语言中的指针的简单用法,那么本章,老猫就和大家一起来学习一下GO语言中的容器. 数组 数组的定义 说到容器,大家有编程经验的肯定第一个 ...

  2. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  3. java配置方法

    1.新建一个Config文件夹 2.代码 package com.shao.config; import com.shao.pojo.User; import org.springframework. ...

  4. [JS高程] 字符串模式匹配方法

    目录 1. RegExp 对象 2. 字符串模式匹配方法 2.1 match() , search() 2.2 replace() 2.2.1 第二个参数为字符串的应用情况 2.2.2 第二个参数为函 ...

  5. 如何删除一个win10的服务

    使用场景: 之前电脑玩腾讯qq微端游戏,后来卸载残留服务一直在后台占用系统资源.那么如何关闭这个服务呢. 1.首先 管理员运行--cmd.exe 2.打开任务管理器,找到服务名称,如果服务开启可以关闭 ...

  6. IPv4 寻址方式简介

    IPv4 支持三种不同类型的寻址模式.单播寻址方式.广播寻址方式和组播寻址方式.本章节我们来介绍这些寻址方式. 单播寻址方式 在这种模式下,数据只发送到一个目标主机.Destination Addre ...

  7. 8.3 k8s部署jenkins,通过pv/pvc结合NFS服务器持久化

    1.制作jenkins docker镜像 1.1 下载jenkins wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.30 ...

  8. CF1455G Forbidden Value

    本题教训我们: 如果遇到在返回值域范围的dp时,可以考虑线段树合并操作. 考虑最开始写作一个\(if:0;end\) 那么所有的\(if\)可以记作一个树状结构,\(set\)为子节点 先把所有\(s ...

  9. CF1466G Song of the Sirens

    题目传送门 题意简述:给出 \(n,s_0,t\ (n=|t|)\),定义 \(s_i=s_{i-1}+t_i+s_{i-1}\).多次询问给出 \(k,m\),求 \(m\) 在 \(s_k\) 中 ...

  10. curl实现SFTP上传下载文件

    摘自:https://blog.csdn.net/swj9099/article/details/85292444 #include <stdio.h> #include <stdl ...