Конфигурация Jenkins xml в основанный на Groovy Jenkins Job DSL

Может ли кто-нибудь дать мне полезную ссылку, где я могу найти информацию о преобразовании сложной конфигурации 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>

2 ответа

Решение

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

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

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

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

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

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

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

freeStyleJob("Arthur's Example") {
  description('Description')
  logRotator(30)
}

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

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

Другие вопросы по тегам