2016-11-30 7 views
-1

Я использую настраиваемый плагин для нашего собственного корпоративного приложения в Jenkins. Преобразуя все существующие задания Jenkins в сценарии DSL, это означает, что мне нужно использовать блок configure для включения задач, которые запускаются с помощью этого плагина. Я думал, что правильно записал код DSL, потому что, когда я ввожу его в http://job-dsl.herokuapp.com/, он генерирует XML, который идеально соответствует моему текущему config.xml для задания. Однако, когда я запускаю DSL-скрипт в Jenkins и сгенерирую задание, у него отсутствует критический блок XML, и я не могу понять, почему.Jenkins dsl configure сгенерированный блок 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, и я не могу понять, почему.

ответ

0

Так что, играя вокруг намного больше, мне удалось выяснить, как правильно передать дочерние элементы в блок configure, и, следовательно, то, что я делал неправильно здесь. Ниже приведен правильный код.

configure { project -> 

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