我在Jenkins中有一个XML文件,看起来像这样:
<?xml version='1.0' encoding='UTF-8'?>
<build>
<actions>
<hudson.model.ParametersAction>
<safeParameters class="sorted-set"/>
<parameters class="java.util.Arrays$ArrayList">
<a class="hudson.model.ParameterValue-array">
<hudson.model.StringParameterValue>
<name>branch</name>
<description></description>
<value>feature/MyAmazingBranch</value>
</hudson.model.StringParameterValue>
...
</build>
我的目标是构建一个gradle任务,该任务将返回branch参数,在这种情况下为
feature/MyAmazingBranch
。我已经能够解析XML并打印解析的结果,但是它对我来说目前没有意义,并且我不确定如何访问特定的节点。
task getBranch {
ext.srcFile = file('build_jenkins.xml')
def buildFile = new XmlParser().parse(srcFile)
println buildFile
}
打印:
build[attributes={}; value=[actions[attributes={}; value=[hudson.model.ParametersAction[attributes={}; value=[safeParameters[attributes={class=sorted-set}; value=[]], parameters[attributes={class=java.util.Arrays$ArrayList}; value=[a[attributes={class=hudson.model.ParameterValue-array}; value=[hudson.model.StringParameterValue[attributes={}; value=[name[attributes={}; value=[branch]], description[attributes={}; value=[]], value[attributes={}; value=[feature/WAWEB-6358-create-api-for-developer-applications]]]]....
如何使用Gradle / Groovy访问参数名称和值?
最佳答案
以下内容将为您创建带有父节点前缀hudson.model.
和后缀ParameterValue
的父节点的子代的值集合,其中的中间值似乎是hudson.model.ParameterValue子类的模式
def build = new XmlSlurper().parse( srcFile )
def params = build.'**'.findAll{ node -> node.name() =~ /hudson.model.[\w.]+ParameterValue/ }*.value
关于gradle - Groovy从Jenkins XML获得深层嵌套的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327953/