groovy – 使用Jenkins Job-DSL配置块将自定义步骤放在特定位置
使用job-dsl-plugin我试图编写以前手动配置的相当数量的Jenkins作业的配置.
这些作业中的一种有多个步骤,包括使用XShell插件的一对,这不是job-dsl直接支持的.但是,我应该能够通过使用自定义“配置”块来解决这个问题. 在http://job-dsl.herokuapp.com/使用“Job DSL playground”,我得到了: job { name 'my-job' jdk('JDK-17') steps { configure { node -> node / builders { 'hudson.plugins.xshell.XShellBuilder'(plugin: 'xshell@0.9') { 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: 'xshell@0.9') { commandLine('run-me-as-the-last-build-step') executeFromWorkingDir('true') } } } } } 如果我只包含第一个配置块,我会在第一步位置获得第一个命令.但是当第二个(最后一个)配置块出现时,“node / builders”再次匹配第一个元素并覆盖它,因此run-me-as-the-last-step是第一个也是唯一一个XShellBuilder.我寻求的输出看起来像: <project> ... <builders> <hudson.plugins.xshell.XShellBuilder plugin='xshell@0.9'> <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='xshell@0.9'> <commandLine>run-me-as-the-last-build-step</commandLine> <executeFromWorkingDir>true</executeFromWorkingDir> </hudson.plugins.xshell.XShellBuilder> </builders> ... </project> 我无法弄清楚Groovy XML / Job-DSL语法是否将第二个块插入“最后一个孩子;可以使用Job-DSL或Groovy XMLParser专家给我一个关于如何匹配和插入任意位置的指针< builders>的孩子? (我很欣赏我可以使用job(类型:Maven)和preBuildSteps以及postBuildSteps,但实际上我还需要一些其他东西,纯粹的maven工作排除在外.) 解决方法
你可以使用<<运算符附加节点,否则将替换具有相同名称的现有节点.有关详细信息,请参阅
Job DSL wiki.
job { name('foo') steps { shell('echo AAA') } configure { it / builders << 'hudson.plugins.xshell.XShellBuilder' { commandLine('123') } } steps { shell('echo BBB') } configure { it / builders << 'hudson.plugins.xshell.XShellBuilder' { commandLine('456') } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |