

Jenkins-Groovy中三元表达式的用法
source link: https://wiki.eryajf.net/pages/ebae63/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Jenkins-Groovy中三元表达式的用法
我们在使用pipeline的时候,如果某一个变量没有正常声明,则会遇到变量定义失败的错误,这个时候,我们可以借助三元表达式来解决这个问题。
举一个场景:比如我在流水线中,代码拉取完毕之后,会获取到该次拉取对应的一些commit信息,但是当拉代码的步骤执行失败的时候,通常会遇到下边变量定义失败的错误。
有一些变量无法确定的场景中,就会使用到三元表达式。
书接上篇文章 Jenkins结合MySql Database插件的平台化实践思路 # (opens new window),流水线中的很多变量是通过查询数据库拿到的结果来赋值的,有时候可能某个值拿不到数据,我们想给他个默认值,就可以用如下方法来写:
env.ROBOT_KEY = job_msg.robot_key ? job_msg.robot_key : 'bbbbbbb'
如上写法表示:我想把job_msg.robot_key
的值赋值给 ROBOT_KEY
,如果job_msg.robot_key
的值不为null,则ROBOT_KEY
等于问号后边的内容,如果值为null,则ROBOT_KEY
等于冒号后边的内容。
通常我们都是要对应的值,或者给一个默认值,可以简写如下:
env.ROBOT_KEY = job_msg.robot_key ?: 'bbbbbbb'
表示:如果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
灵活使用三元表达式,能够让我们更加优雅地集成流水线。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK