Jenkins xml 配置到基于 Groovy 的 Jenkins Job DSL
Jenkins xml configuration to Groovy-based Jenkins Job DSL
有人可以给我一个有用的 link,在那里我可以找到有关转换 Jenkins 作业的 复杂 xml 配置的信息吗?
这是一个 Jenkins 作业示例:
<project>
<actions/>
<description>Description</description>
<logRotator class="hudson.tasks.LogRotator">
<!-- ...-->
</logRotator>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty/><!-- ...-->
</properties>
<scm class="org.jenkinsci.plugins.multiplescms.MultiSCM" plugin="multiple-scms@0.5">
<scms>
<hudson.plugins.git.GitSCM plugin="git@2.4.0"/><!-- ...-->
<hudson.plugins.git.GitSCM plugin="git@2.4.0"/><!-- ...-->
</scms>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<jdk>Default</jdk>
<triggers>
<hudson.triggers.TimerTrigger/><!-- ...-->
</triggers>
<concurrentBuild>false</concurrentBuild>
<customWorkspace>$HUDSON_WD/$REVISION/checkout</customWorkspace>
<builders/>
<publishers>
<hudson.plugins.globalenvvar.GlobalEnvironmentVariablePublisher plugin="globalenvvar@1.0"/><!-- ...-->
<hudson.plugins.parameterizedtrigger.BuildTrigger plugin="parameterized-trigger@2.28"/><!-- ...-->
<hudson.plugins.templateproject.ProxyPublisher plugin="template-project@1.5"/><!-- ...-->
</publishers>
<buildWrappers>
<hudson.plugins.timestamper.TimestamperBuildWrapper plugin="timestamper@1.7.2"/>
</buildWrappers>
</project>
根据我的经验,这是一个完全手动的重写过程。引用 material 位于 https://jenkinsci.github.io/job-dsl-plugin/#。
xml中的很多元素都是默认的,所以xml中的很多元素可以跳过。如果 DSL 不直接支持您配置的插件或插件的功能,则只需要逐个元素转换 xml。
转换过程如下:
- 检查每个配置的 属性(通过 Jenkins GUI),例如"Discard old builds".
- 确定 DSL 是否具有对该元素的本机支持。如果是这样,请在 DSL 中重写它。例如,logRotator 提供 "Discard old builds" 功能。
- 如果DSL不直接支持,你必须手动使用configure输出xml。这是非常棘手的,应尽可能避免。
如果您不确定哪个插件提供了作业元素,您通常可以在该元素的帮助文本中看到插件名称(单击小问号图标)。否则,xml 元素通常包含插件名称。
同样值得一提的是,作业元素在 DSL 中的分解方式与它们在 Jenkins 的“配置”屏幕上的分解方式相同。所以如果它是一个触发器,那么你可以在 triggers.
下的 DSL 中找到它
简单的例子(我知道,你的要复杂得多):
freeStyleJob("Arthur's Example") {
description('Description')
logRotator(30)
}
我在将 freestylejob 转换为 DSL 时遇到了同样的问题,我遇到了一个我找不到该插件的插件,所以我创建了这个:https://github.com/saurabh-sp-tripathi/xml2groovy-jenkins-DSL-configure-block
这基本上应该是一个要点,但我现在让它成为现实。
有人可以给我一个有用的 link,在那里我可以找到有关转换 Jenkins 作业的 复杂 xml 配置的信息吗?
这是一个 Jenkins 作业示例:
<project>
<actions/>
<description>Description</description>
<logRotator class="hudson.tasks.LogRotator">
<!-- ...-->
</logRotator>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty/><!-- ...-->
</properties>
<scm class="org.jenkinsci.plugins.multiplescms.MultiSCM" plugin="multiple-scms@0.5">
<scms>
<hudson.plugins.git.GitSCM plugin="git@2.4.0"/><!-- ...-->
<hudson.plugins.git.GitSCM plugin="git@2.4.0"/><!-- ...-->
</scms>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<jdk>Default</jdk>
<triggers>
<hudson.triggers.TimerTrigger/><!-- ...-->
</triggers>
<concurrentBuild>false</concurrentBuild>
<customWorkspace>$HUDSON_WD/$REVISION/checkout</customWorkspace>
<builders/>
<publishers>
<hudson.plugins.globalenvvar.GlobalEnvironmentVariablePublisher plugin="globalenvvar@1.0"/><!-- ...-->
<hudson.plugins.parameterizedtrigger.BuildTrigger plugin="parameterized-trigger@2.28"/><!-- ...-->
<hudson.plugins.templateproject.ProxyPublisher plugin="template-project@1.5"/><!-- ...-->
</publishers>
<buildWrappers>
<hudson.plugins.timestamper.TimestamperBuildWrapper plugin="timestamper@1.7.2"/>
</buildWrappers>
</project>
根据我的经验,这是一个完全手动的重写过程。引用 material 位于 https://jenkinsci.github.io/job-dsl-plugin/#。
xml中的很多元素都是默认的,所以xml中的很多元素可以跳过。如果 DSL 不直接支持您配置的插件或插件的功能,则只需要逐个元素转换 xml。
转换过程如下:
- 检查每个配置的 属性(通过 Jenkins GUI),例如"Discard old builds".
- 确定 DSL 是否具有对该元素的本机支持。如果是这样,请在 DSL 中重写它。例如,logRotator 提供 "Discard old builds" 功能。
- 如果DSL不直接支持,你必须手动使用configure输出xml。这是非常棘手的,应尽可能避免。
如果您不确定哪个插件提供了作业元素,您通常可以在该元素的帮助文本中看到插件名称(单击小问号图标)。否则,xml 元素通常包含插件名称。
同样值得一提的是,作业元素在 DSL 中的分解方式与它们在 Jenkins 的“配置”屏幕上的分解方式相同。所以如果它是一个触发器,那么你可以在 triggers.
下的 DSL 中找到它简单的例子(我知道,你的要复杂得多):
freeStyleJob("Arthur's Example") {
description('Description')
logRotator(30)
}
我在将 freestylejob 转换为 DSL 时遇到了同样的问题,我遇到了一个我找不到该插件的插件,所以我创建了这个:https://github.com/saurabh-sp-tripathi/xml2groovy-jenkins-DSL-configure-block
这基本上应该是一个要点,但我现在让它成为现实。