Конфигурация Jenkins xml для Jenkins Job DSL на основе Groovy

Может ли кто-нибудь дать мне полезную ссылку, где я могу найти информацию о преобразовании конфигурации complex 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="[email protected]">
        <scms>
            <hudson.plugins.git.GitSCM plugin="[email protected]"/><!-- ...-->
            <hudson.plugins.git.GitSCM plugin="[email protected]"/><!-- ...-->
        </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="[email protected]"/><!-- ...-->            
        <hudson.plugins.parameterizedtrigger.BuildTrigger plugin="[email protected]"/><!-- ...-->
        <hudson.plugins.templateproject.ProxyPublisher plugin="[email protected]"/><!-- ...-->
    </publishers>
    <buildWrappers>
        <hudson.plugins.timestamper.TimestamperBuildWrapper plugin="[email protected]"/>
    </buildWrappers>
</project>

person Arthur    schedule 21.12.2015    source источник
comment
Я думаю, что вы спрашиваете, как вы конвертируете свою текущую работу в Jenkins в Jenkins Job DSL?   -  person Steve Campbell    schedule 21.12.2015
comment
@ Стив Кэмпбелл, да.   -  person Arthur    schedule 21.12.2015


Ответы (2)


По моему опыту, это полностью ручной процесс переписывания. Справочный материал находится по адресу https://jenkinsci.github.io/job-dsl-plugin/#. .

Многие элементы в xml установлены по умолчанию, поэтому большую часть xml можно пропустить. Поэлементное преобразование xml необходимо только в том случае, если DSL напрямую не поддерживает плагин или функцию плагина, который вы настроили.

Процесс преобразования выглядит следующим образом:

  1. Просмотрите каждое настроенное свойство (через графический интерфейс Jenkins), например. «Отменить старые сборки».
  2. Определите, имеет ли DSL встроенную поддержку этого элемента. Если да, то перепишите его в DSL. Например, logRotator предоставляет функцию «Отменить старые сборки».
  3. Если DSL не поддерживает напрямую, вам необходимо вручную использовать настроить для вывода XML. Это довольно сложно, и этого следует избегать, если это вообще возможно.

Если вы не уверены, какой плагин предоставляет элемент задания, вы часто можете увидеть имя плагина в тексте справки для этого элемента (щелкните значок с маленьким вопросительным знаком). В противном случае элемент xml часто содержит имя плагина.

Также полезно знать, что элементы задания разбиваются в DSL таким же образом, как и на экране «Настройка» в Jenkins. Поэтому, если это триггер, вы можете найти его в DSL в разделе триггеры.

Простой пример (я знаю, у вас гораздо сложнее):

freeStyleJob("Arthur's Example") {
  description('Description')
  logRotator(30)
}
person Steve Campbell    schedule 21.12.2015

Я столкнулся с той же проблемой при преобразовании фристайла в DSL, я наткнулся на плагин, для которого я не смог найти плагин, и поэтому я создаю это: https://github.com/saurabh-sp-tripathi/xml2groovy-jenkins-DSL-configure-block

В принципе, это может быть сутью, но я бы сказал, что это такое.

person old-monk    schedule 28.07.2018