从Jenkinsfile中的xml文件中获取属性值

时间:2017-07-06 14:37:32

标签: jenkins jenkins-pipeline

我有一个Jenkins文件,其中我需要一个来自我的.csproj文件的属性(dotnet核心项目)

我试过这个:

def versionPrefix = sh(script: 'cat ./src/project.csproj | grep (?<=<VersionPrefix>).*(?=</VersionPrefix>)')

我知道我可能很遥远,所以我不一定要寻找接近此的东西,但我正在寻找一种不需要插件的解决方案(最好)。

3 个答案:

答案 0 :(得分:2)

看看名为"XmlSlurper"的Groovy库,它可能对你很有帮助。

Jenkins管道中不允许这样做,但that issue前一段时间已经解决了!有人试图做类似的事情here

希望这有帮助!

答案 1 :(得分:2)

无管道解决方案

首先安装Environment Script Plugin

然后配置为图像

enter image description here

Enviroment Script Plugin

在图像中,我从build.xml文件中获取了版本,&#34; -o&#34; egrep中的arg(也适用于grep)是仅返回我想要的部分而不是整行,其余的是纯正则表达式以匹配数字版本。 (点),类似

<强> 1.3.13

使用管道解决方案

只需根据需要调整图像中的grep

def versionPrefix =  sh(script: 'grep -o (?<=<VersionPrefix>).*(?=</VersionPrefix>) ./src/project.csproj')

答案 2 :(得分:0)

我知道已经回答了这个问题,但是如果其他任何人都需要此行为并且grep -o不起作用,那么以下命令可以起作用:

def versionPrefix = sh([returnStdout: true, script: 'sed -n "s/.*<VersionPrefix>\\([^<]*\\)<\\/VersionPrefix>.*/\\1/p" ./src/project.csproj'])

这是因为-至少有一些-grep变体不支持先行/后备。