如何在Jenkinsfile中去除字符串末尾的连字符
Jenkinsfile 去除字符串末尾连字符的正确方案
原代码失效原因
- 未导入
org.apache.commons.lang.StringUtils类,Jenkins Pipeline默认不会自动引入该工具类,直接调用会报找不到方法的错误 - 直接对
imageName赋值无法修改全局环境变量的值,必须加env.前缀指定作用域
最优解决方案
推荐直接使用Groovy原生字符串正则替换方法,无需额外导包,兼容性更强,可直接在environment块完成处理,无需额外的修复阶段:
pipeline { environment { // 先用toLowerCase()转小写,再用正则删除末尾所有连续连字符 processedBranch = "${env.BRANCH_NAME.toLowerCase().replaceAll(/-+$/, '')}" imageName = "example.org/myapp/myapp-${processedBranch}" } agent any stages { stage('Build') { steps { echo "最终镜像名:${imageName}" // 后续脚本直接使用imageName变量即可 } } } }
正则说明
/-+$/:
-+匹配1个或多个连续的连字符$匹配字符串末尾位置
该规则会一次性删除字符串末尾所有连续的连字符,哪怕有多个也能正确处理,适配更多异常场景。
如果你需要在后续阶段修改变量的写法
如果有特殊逻辑需要在后续stage中处理变量,注意要加env.前缀操作环境变量:
pipeline { environment { imageName = "example.org/myapp/myapp-${env.BRANCH_NAME.toLowerCase()}" } agent any stages { stage('Fixup Variables') { steps { script { env.imageName = env.imageName.replaceAll(/-+$/, '') } } } } }
内容的提问来源于stack exchange,提问作者101010
相关产品推荐
相关产品推荐

