如何在Jenkinsfile中获取DynamicReferenceParameter的“value”值?
如何在Jenkinsfile中获取DynamicReferenceParameter的“value”值?
兄弟,我之前也踩过这个坑!你遇到的问题其实是DynamicReferenceParameter插件针对ET_FORMATTED_HTML类型的一个特性——这个类型的参数默认是仅用于展示HTML内容,它并没有把显示的HTML内容作为可提交的value传递到Jenkinsfile里,所以你用$params.FOO只能拿到空字符串。
不过别担心,有两种办法能解决这个问题:
修改参数的生成脚本,同时指定returnValue
你在编写生成DynamicReferenceParameter的Groovy脚本时,不要只设置displayValue,而是返回一个包含displayValue和returnValue的Map对象。比如:return [ displayValue: "<div><h3>当前版本:v1.2.3</h3></div>", returnValue: "<div><h3>当前版本:v1.2.3</h3></div>" ]这样当参数渲染出HTML后,提交构建时
returnValue的内容就会被传递到Jenkinsfile里,你用$params.FOO就能拿到和显示内容一致的HTML值了。如果不需要完整HTML,也可以把returnValue设为你需要的关键信息,比如版本号之类的。如果无法修改参数脚本,考虑临时存储内容
要是你没办法改参数的生成脚本,可以在那个脚本里把HTML内容写入到Jenkins节点的临时文件中,比如:def htmlContent = "<div><h3>当前版本:v1.2.3</h3></div>" new File('/tmp/dynamic_param_content.txt').write(htmlContent) return [displayValue: htmlContent]然后在Jenkinsfile里读取这个文件的内容:
def paramValue = readFile '/tmp/dynamic_param_content.txt'不过这种方法要注意节点权限和临时文件的清理问题,不如第一种方法稳妥。
总结一下,核心就是要让参数把你需要的HTML内容作为returnValue传递出来,毕竟默认的ET_FORMATTED_HTML只是用来展示,不会主动提交内容的。
备注:内容来源于stack exchange,提问作者Gavriel
相关产品推荐
相关产品推荐

