2015-02-16 3 views
6

Использование job-dsl-plugin Я пытаюсь настроить сценарий для достаточного количества заданий Jenkins, которые ранее были настроены вручную.Использование Jenkins Job-DSL Настроить блок для размещения пользовательских шагов в определенных положениях

Один из достоинств этих заданий состоит из нескольких шагов, включая пару, в которой используется плагин XShell, это напрямую не поддерживается job-dsl. Однако я мог бы обойти это, используя специальный блок «configure».

Использование «Работа DSL площадка» в http://job-dsl.herokuapp.com/ я добралась до:

job { 
    name 'my-job' 
    jdk('JDK-17') 

    steps { 
    configure { node -> 
     node/builders { 
     'hudson.plugins.xshell.XShellBuilder'(plugin: '[email protected]') { 
      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: '[email protected]') { 
      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='[email protected]'> 
      <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='[email protected]'> 
      <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(type:Maven) с preBuildSteps и postBuildSteps, но на самом деле мне нужно несколько других вещей в там же котором чистая работа maven исключает.) Спасибо!

ответ

6

Вы можете использовать оператор << для добавления узлов, иначе существующий узел с идентичным именем будет заменен. Подробности см. На странице 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') 
    } 
    } 
} 
+1

Получил его, и настройка должна быть за пределами шагов, спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^