jenkins - 在 groovy 管道中,如何在 switch case 中添加模式?
问题描述
我是初学者,试图在 groovy 管道中使用开关盒。我已经定义了参数
- ENV(选择参数),值为 test1、test2、test3、prod1、prod2、prod3
- DISPLAY(主动无功参数),参考参数为 ENV
switch("$ENV") { case "test*": return ['True'] break case "prod*": return ['False'] break default: return ['Error in env selection'] break }
当我给出 test1 时,它工作得很好,而当我给出模式“test*”时,代码输出不符合预期。
请帮助我解决问题。
先感谢您。
解决方案
您在正则表达式模式匹配中有错误,请参阅下面的解决方案。
但是,使用 switch 是很老的习惯,只是因为向后兼容而保留在语言中。可能在现代 Groovy 中,您永远不会看到开关。我添加了第二个解决方案,我将如何解决这个问题。
ENV = "prod1"
// classic solution using swtich
def SelectSwitch(value) {
switch(value) {
case ~/test.*/: return 'True'
case ~/prod.*/: return 'False'
default: return 'Error in env selection'
}
}
assert SelectSwitch(ENV) == 'False'
// modern approach using a map
def SelectMap(value) {
['test.*': 'True', 'prod.*': 'False' ]
.find { value ==~ it.key }
?.value
?: 'Error in env selection'
}
assert SelectMap(ENV) == 'False'
推荐阅读
- python - 如何使用 selenium 从网站上抓取一些链接
- java - 安装eclipse时缺少JRE
- json - 如何使用 ELK 堆栈将大 JSON 文件导入 Docker-swarm 集群?
- haskell - 如何总结haskell中奇数的索引?
- java - dispatcherServletRegistration Spring 启动异常
- google-sheets - 如何计算 Google 表格中的所有模式?
- css - Internet Explorer/Edge 的剪辑路径替代方案
- html - 导航栏扩展时的问题(其他项目一起下降)
- git - 如何避免将特定于分支的更改合并回 master?
- java - jvm 运行垃圾回收时 Kubernetes Pod 内存使用量不下降