惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
博客园 - Franky
博客园_首页
T
Tailwind CSS Blog
雷峰网
雷峰网
罗磊的独立博客

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周
Jenkins-Groovy中三元表达式的用法
二丫讲梵 · 2022-09-10 · via 二丫讲梵

我们在使用 pipeline 的时候,如果某一个变量没有正常声明,则会遇到变量定义失败的错误,这个时候,我们可以借助三元表达式来解决这个问题。

举一个场景:比如我在流水线中,代码拉取完毕之后,会获取到该次拉取对应的一些 commit 信息,但是当拉代码的步骤执行失败的时候,通常会遇到下边变量定义失败的错误。

有一些变量无法确定的场景中,就会使用到三元表达式。

书接上篇文章 Jenkins 结合 MySql Database 插件的平台化实践思路 # (opens new window),流水线中的很多变量是通过查询数据库拿到的结果来赋值的,有时候可能某个值拿不到数据,我们想给他个默认值,就可以用如下方法来写:

	env.ROBOT_KEY = job_msg.robot_key ? job_msg.robot_key : 'bbbbbbb'

1

如上写法表示:我想把job_msg.robot_key 的值赋值给 ROBOT_KEY ,如果job_msg.robot_key的值不为 null,则ROBOT_KEY等于问号后边的内容,如果值为 null,则ROBOT_KEY等于冒号后边的内容。

通常我们都是要对应的值,或者给一个默认值,可以简写如下:

	env.ROBOT_KEY = job_msg.robot_key ?: 'bbbbbbb'

1

表示:如果job_msg.robot_key的值不为 null,则ROBOT_KEY等于job_msg.robot_key,如果值为 null,则ROBOT_KEY等于bbbbbbb

这种用法的一个好处在于,首先代码简洁,其次就是能够有效避免一些不确定变量定义导致的流水线异常。

同时我们还可以做一些判断语句,如果前边的判断语句为真,则值为问号后边的,为假则值为冒号后边的,举例如下:

	env.ROBOT_KEY = (job_msg.robot_key == null || job_msg.robot_key == '0') ? '1' : job_msg.robot_key

1

灵活使用三元表达式,能够让我们更加优雅地集成流水线。