6

有人可以给我一个有用的链接,我可以在其中找到有关为 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>
4

2 回答 2

13

根据我的经验,这是一个完全手动的重写过程。参考资料位于https://jenkinsci.github.io/job-dsl-plugin/#

xml 中的许多元素都是默认的,因此可以跳过很多 xml。仅当 DSL 不直接支持您配置的插件或插件的功能时,才需要逐个元素转换 xml。

转换过程如下:

  1. 浏览每个配置的属性(通过 Jenkins GUI),例如“丢弃旧版本”。
  2. 确定 DSL 是否具有对该元素的本机支持。如果是这样,请在 DSL 中重写它。例如,logRotator提供了“丢弃旧版本”功能。
  3. 如果 DSL 不直接支持,则必须手动使用configure来输出 xml。这是相当棘手的,尽可能避免。

如果您不确定哪个插件提供了作业元素,您通常可以在该元素的帮助文本中看到插件名称(单击小问号图标)。否则,xml 元素通常包含插件名称。

另外值得一提的是,工作元素在 DSL 中的分解方式与它们在 Jenkins 的配置屏幕上的方式相同。所以如果它是一个 Trigger,那么你可以在 DSL 的triggers下找到它。

简单的例子(我知道,你的要复杂得多):

freeStyleJob("Arthur's Example") {
  description('Description')
  logRotator(30)
}
于 2015-12-21T19:41:25.013 回答
0

我在将freestylejob转换为DSL时遇到了同样的问题,我遇到了一个我无法找到插件的插件,所以我创建了这个:https ://github.com/saurabh-sp-tripathi/xml2groovy -jenkins-DSL-配置块

这基本上应该是一个要点,但我现在就让它成为现实。

于 2018-07-28T17:35:05.530 回答