我在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之外,我无法弄清楚原因。
答案 0 :(得分:0)
所以现在我玩了很多,我已经设法弄清楚如何正确地将子元素传递到配置块中,因此我在这里做错了。正确的代码如下。
$