【问题标题】:Groovy get deeply nested parameter from Jenkins XMLGroovy 从 Jenkins XML 获取深度嵌套的参数
【发布时间】:2017-07-26 13:07:17
【问题描述】:

我在 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 任务,在本例中为 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 访问参数名称和值?

【问题讨论】:

    标签: gradle groovy


    【解决方案1】:

    以下将为您创建一个子节点的值集合,其父节点以 hudson.model. 为前缀,以 ParameterValue 为后缀,中间有一些东西,这似乎是 hudson.model.ParameterValue 子类的模式

    def build = new XmlSlurper().parse( srcFile )
    def params = build.'**'.findAll{ node -> node.name() =~ /hudson.model.[\w.]+ParameterValue/ }*.value
    

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 2019-04-02
      • 1970-01-01
      • 2013-06-08
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多