Jenkins环境下如何将properties文件中指定字符串替换为Jenkins参数
问题原因分析
之前的方案失败核心原因如下:
- 方案1:匹配关键词错误,你要替换的是
REPLACE_RELEASE_VERSION不是RELEASE_VERSION,且Map对象的replaceAll方法用法不符合场景 - 方案2:readFile读取的是字符串,替换完成后既没有写回原文件,也没有转换为properties对象,后续如果重新读取原文件自然拿到的是旧值
- 方案3:判断条件错误,实际配置值是
-REPLACE_RELEASE_VERSION,不等于REPLACE_RELEASE_VERSION,且$k的写法没有正确引用变量 - 方案4:Jenkins流水线沙箱环境默认禁止直接new File操作,且同样没有处理文件回写逻辑
正确实现方案
场景1:仅需要获取替换后的参数对象(无需修改原文件)
def jboss_parameters = readProperties file: jboss_propfile jboss_parameters.each { k, v -> if (v.toString().contains("REPLACE_RELEASE_VERSION")) { jboss_parameters[k] = v.toString().replace("REPLACE_RELEASE_VERSION", params.RELEASE_VERSION) } } println jboss_parameters
场景2:需要将替换后的内容写回原properties文件
// 读取文件内容替换 def fileContent = readFile(jboss_propfile) def updatedContent = fileContent.replace("REPLACE_RELEASE_VERSION", params.RELEASE_VERSION) // 写回原文件 writeFile file: jboss_propfile, text: updatedContent // 后续读取即为替换后的值 def jboss_parameters = readProperties file: jboss_propfile println jboss_parameters
注意事项
如果params.RELEASE_VERSION包含正则特殊字符,优先使用replace而非replaceAll避免转义问题。
内容的提问来源于stack exchange,提问作者Vini
相关产品推荐
相关产品推荐

