2016-11-30 3 views
-1

Ich benutze ein benutzerdefiniertes Plugin für unsere eigene Firma App in Jenkins. Beim Konvertieren aller vorhandenen Jenkins-Jobs in DSL-Skripts bedeutet dies, dass ich den configure-Block verwenden muss, um Aufgaben einzubeziehen, die mit diesem Plugin ausgeführt werden. Ich dachte, ich hätte den DSL-Code richtig geschrieben, denn wenn ich ihn in http://job-dsl.herokuapp.com/ eingebe, erzeugt er XML, das perfekt zu meiner aktuellen config.xml für den Job passt. Wenn ich jedoch das DSL-Skript in Jenkins ausführe und einen Job erzeuge, fehlt ein kritischer XML-Block und ich kann nicht verstehen, warum.Jenkins dsl konfigurieren Block-generierte XML passt nicht API

Der configure Blockcode ich im Skript bin auch ist:

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 '' 
    } 

Und die config.xml des Auftrags wird erzeugt zeigt dies:

<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> 

jedoch die XML Ich muss haben am ende von das ist, und was entspricht, was die herokuapp mir von meinem konfigurationsblock zeigt, ist:

<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> 

Da dies meine ersten Versuche sind, den configure-Block zu verwenden, bin ich mir sicher, dass ich das viel genauer machen könnte als das, was ich mache. Aber das Testen auf dem Spielplatz zeigt an, dass dies funktionieren sollte, aber die Aufgabe, die ausgeführt werden muss, wird aus dem generierten XML weggelassen, und ich kann nicht herausfinden warum.

Antwort

0

Nachdem ich jetzt viel mehr herumgespielt habe, habe ich es geschafft, herauszufinden, wie man Kindelemente richtig in den configure Block übergibt, und folglich, was ich hier falsch gemacht habe. Der korrekte Code ist unten.

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 '' 
    } 
Verwandte Themen