Jenkins dsl配置块生成的XML与API不匹配

时间:2016-11-30 12:32:06

标签: jenkins groovy jenkins-plugins jenkins-job-dsl

我在Jenkins为我们自己的公司应用程序使用自定义插件。在将所有现有Jenkins作业转换为DSL脚本时,这意味着我需要使用configure块来包含使用此插件运行的任务。我以为我已正确编写了DSL代码,因为当我将其输入http://job-dsl.herokuapp.com/时,它会生成与我当前的config.xml完全匹配的XML。但是,当我在Jenkins中运行DSL脚本并生成一个作业时,它缺少一个关键的XML块,我无法弄清楚原因。

我在脚本中包含的配置块代码是:

configure { project ->

    project / 'builders' << 'org.mycompany.myapp.jenkins.plugin.Builder' {
      modelOption'modelDownload'
      appOption'appZip'
      execParameters'-debug'
      taskPath 'UnitTests/All.task'
    project / 'builders' / 'tasks' << 'org.mycompany.myapp.jenkins.plugin.Builder_-myappTask' {
      taskPath 'UnitTests/All.task'
    project / 'builders' / 'tasks' / 'parameters'
    }
      modelPath ''
      nexusUrl ''
      nexusUser ''
      nexusPass ''
      myappZipName 'org.mycompany.myapp-win32.win32.x86_64.zip'
    }
      overwriteMyApp ''
  }

正在生成的作业的config.xml显示:

<org.mycompany.myapp.jenkins.plugin.Builder plugin="myapp-jenkins-plugin@1.0-SNAPSHOT">
<modelOption>modelDownload</modelOption>
<appOption>appZip</appOption>
<modelPath/>
<nexusUrl/>
<nexusUser/>
<nexusPass/>
<myappZipName>org.mycompany.myapp-win32.win32.x86_64.zip</myappZipName>
<execParameters>-debug</execParameters>
<overwritemyappa>false</overwritemyapp>
</org.mycompany.myapp.jenkins.plugin.Builder>

但是,我需要在结尾处使用的XML,以及与配置块中herokuapp显示的内容相匹配的是:

<org.mycompany.myapp.jenkins.plugin.Builder plugin="myapp-jenkins-plugin@1.0-SNAPSHOT">
<modelOption>modelDownload</modelOption>
<appOption>appZip</appOption>
<tasks>
<org.mycompany.myapp.jenkins.plugin.Builder_-myappTask>
<taskPath>UnitTests\All.task</taskPath>
<parameters/>
</org.mycompany.myapp.jenkins.plugin.Builder_-myappTask>
</tasks>
<modelPath/>
<nexusUrl/>
<nexusUser/>
<nexusPass/>
<myappZipName>org.mycompany.myapp-win32.win32.x86_64.zip</myappZipName>
<execParameters>-debug</execParameters>
<overwritemyapp>false</overwritemyapp>
</org.mycompany.myapp.jenkins.plugin.Builder>

由于这些是我使用配置块的前几次尝试,我确信我能够以比我正在做的更加整洁的方式做到这一点。但是,在操场上进行测试表明这应该有效,但是需要运行的任务被遗漏在生成的XML之外,我无法弄清楚原因。

1 个答案:

答案 0 :(得分:0)

所以现在我玩了很多,我已经设法弄清楚如何正确地将子元素传递到配置块中,因此我在这里做错了。正确的代码如下。

$