-1
我在Jenkins为自己的公司应用程序使用了自定义插件。将所有Jenkins作业转换为DSL脚本时,这意味着我需要使用configure块来包含使用此插件运行的任务。我以为我已经正确地编写了DSL代码,因为当我将它输入http://job-dsl.herokuapp.com/时,它会生成与我当前的作业config.xml完全匹配的XML。但是,当我在Jenkins中运行DSL脚本并生成作业时,它缺少XML的关键块,我无法弄清楚原因。Jenkins dsl配置块生成的XML不匹配API
我包括在脚本中的配置块的代码是:
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="[email protected]">
<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="[email protected]">
<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>
由于这些是我第一次尝试使用configure块,所以我相信我可以用比我所做的更为简洁的方式来做到这一点。但是,在操场上测试表明这应该起作用,但是需要运行的任务被排除在生成的XML之外,我无法弄清楚原因。