gradle - Groovy从Jenkins XML获得深层嵌套的参数

标签 gradle groovy

我在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/

相关文章:

android - 如何从buildSrc中的自定义Gradle插件访问Android的 “dynamicFeatures”属性

kotlin - Kotlin 库的公共(public) API 检查

android - 无法解决:com.github.mopa11:MainDemo1:1.0.0

gradle - 无法创建任务 ':GluonApplicationApp:debug'

java - 忽略日期范围的年份的最佳做法

java - 使用功能分支进行 Gradle 依赖管理

regex - 如何在 Groovy 中匹配字符串和模式

json - 使用 Jackson 序列化带有排序键的 JSON

java - net.sf.jasperreports.engine.JRRuntimeException : Function MONTH not found

Jenkins 声明式管道动态选择参数在首次构建后不会更新