Jenkins-Groovy中三元表达式的用法
文章发布较早,内容可能过时,阅读注意甄别。
我们在使用 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
灵活使用三元表达式,能够让我们更加优雅地集成流水线。
上次更新: 2024/11/19, 23:11:42