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

推荐订阅源

D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
L
LangChain Blog
B
Blog
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
U
Unit 42
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
小众软件
小众软件
I
InfoQ
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
C
Check Point 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

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