Mit dem Job-dsl-Plugin versuche ich die Konfiguration einer ganzen Reihe von Jenkins-Jobs zu skripten, die zuvor manuell konfiguriert wurden.Verwenden von Jenkins Job-DSL Konfigurieren Sie den Block, um benutzerdefinierte Schritte in bestimmten Positionen zu platzieren
Ein Geschmack dieser Jobs hat mehrere Schritte einschließlich ein paar, die das XShell-Plugin verwenden, dies wird nicht direkt von Job-dsl unterstützt. Allerdings sollte ich in der Lage sein, das zu umgehen, indem ich einen benutzerdefinierten "configure" -Block verwende.
den „Job DSL Spielplatz“ auf http://job-dsl.herokuapp.com/ Mit Ich habe so weit gekommen wie:
job {
name 'my-job'
jdk('JDK-17')
steps {
configure { node ->
node/builders {
'hudson.plugins.xshell.XShellBuilder'(plugin: '[email protected]') {
commandLine('run-me-as-the-first-build-step')
executeFromWorkingDir('true')
}
}
}
maven {
mavenInstallation('Default')
goals('clean')
goals('verify')
property('prop1', 'value1')
property('user.timezone', 'UTC')
mavenOpts('--batch-mode')
}
maven {
mavenInstallation('Default')
goals('deploy')
property('prop2', 'value2')
property('user.timezone', 'UTC')
mavenOpts('--batch-mode')
}
shell('shell-task')
configure { node ->
node/builders {
'hudson.plugins.xshell.XShellBuilder'(plugin: '[email protected]') {
commandLine('run-me-as-the-last-build-step')
executeFromWorkingDir('true')
}
}
}
}
}
Wenn ich bin gerade den ersten configure Block nur, ich den ersten Befehl in der ersten Stufe Position. Aber wenn der zweite (letzte) Konfigurationsblock vorhanden ist, passt das "node/builders"
wieder auf das erste Element und überschreibt es, sodass run-me-as-the-last-step
der erste und einzige XShellBuilder ist. Der Ausgang ich versuchen würde, in etwa so aussehen:
<project>
...
<builders>
<hudson.plugins.xshell.XShellBuilder plugin='[email protected]'>
<commandLine>run-me-as-the-first-build-step</commandLine>
<executeFromWorkingDir>true</executeFromWorkingDir>
</hudson.plugins.xshell.XShellBuilder>
<hudson.tasks.Maven>
<targets>clean verify</targets>
<properties>prop1=value1
user.timezone=UTC</properties>
<mavenName>Default</mavenName>
<jvmOptions>--batch-mode</jvmOptions>
<usePrivateRepository>false</usePrivateRepository>
</hudson.tasks.Maven>
<hudson.tasks.Maven>
<targets>deploy</targets>
<properties>prop2=value2
user.timezone=UTC</properties>
<mavenName>Default</mavenName>
<jvmOptions>--batch-mode</jvmOptions>
<usePrivateRepository>false</usePrivateRepository>
</hudson.tasks.Maven>
<hudson.tasks.Shell>
<command>shell-task</command>
</hudson.tasks.Shell>
<hudson.plugins.xshell.XShellBuilder plugin='[email protected]'>
<commandLine>run-me-as-the-last-build-step</commandLine>
<executeFromWorkingDir>true</executeFromWorkingDir>
</hudson.plugins.xshell.XShellBuilder>
</builders>
...
</project>
ich nicht die Groovy XML/Job-DSL-Syntax, den zweiten Blockes als „letztes Kind einfügen herausfinden kann, kann ein Job-DSL oder Groovy XMLParser Experten bitte gib mir einen Zeiger auf, wie an einer beliebigen Position in den Kindern <builders>
?
(I schätzen anzupassen und einzufügen, dass ich job(type:Maven)
mit preBuildSteps
und postBuildSteps
verwenden könnte, aber eigentlich brauche ich ein paar andere Dinge in dort auch die ein pure maven job ist ausgeschlossen.) Danke!
Habe es, und die Konfiguration muss außerhalb der Schritte sein, danke –