如何在Jenkins自由风格项目中从XML文件读取并设置变量?
解决方案
方法一:通过PowerShell提取版本并生成属性文件(推荐,无需额外依赖)
- 在源码检出步骤之后,添加一个Execute PowerShell步骤,编写脚本解析
Example.props文件并导出版本到属性文件:
# 定位到源码中的props文件(路径相对于构建节点的工作区) $propsFilePath = ".\Example.props" # 解析XML文件提取Version值 $versionValue = (Select-Xml -Path $propsFilePath -XPath "//Version").Node.InnerText # 将版本写入属性文件,供后续注入使用 echo "Version=$versionValue" > .\version.properties
- 添加Inject environment variables步骤(Environment Injector插件提供),在"Properties File Path"中填写属性文件路径:
.\version.properties。 - 后续步骤即可正常使用
%Version%(Windows batch)或$Version(其他步骤)调用该版本值。
方法二:通过构建节点执行Groovy脚本提取版本
如果构建节点已安装Groovy环境,可使用单独的Execute Groovy script步骤(注意不是Environment Injector插件内的Groovy脚本),该步骤会在构建节点运行,直接访问工作区文件:
// 读取工作区中的props文件 def propsFile = new File("./Example.props") def xmlContent = new XmlSlurper().parse(propsFile) // 提取Version值并设置为环境变量 env.Version = xmlContent.Version.text()
执行完该步骤后,后续所有构建步骤均可直接使用%Version%或$Version。
关键注意事项
- 所有读取
Example.props的操作必须放在源码检出步骤之后,确保文件已存在于构建节点的工作区。 - 路径需使用相对于构建节点工作区的相对路径,避免使用绝对路径(不同节点工作区路径可能不同)。
内容的提问来源于stack exchange,提问作者Fire Lancer
相关产品推荐
相关产品推荐

