2016-02-05 1 views
1

Я попытался использовать этот условный многоступенчатый плагин и написал скрипт grrovy для DSL, однако, когда я загружаю этот код, перечисленные шаги находятся вне до условного блока, что я делаю неправильно здесь?Jenkins условный уровень groovy script

Ref: https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.step.StepContext.conditionalSteps

Код:

def configSeed(environment, slaveLabel) { 
    { it -> 
     parameters { 
     stringParam('BUILD_REQUIRED', 'true', ''); 
    } 
    scm { 
     git { 
      remote { 
       name('origin'); 
       url('xyz'); 
       refspec('$GERRIT_REFSPEC'); 
       credentials('xyz'); 
      } 
      branch('$GERRIT_BRANCH'); 
      strategy { 
       gerritTrigger(); 
      } 
     } 
    } 
    steps { 
     conditionalSteps { 
      condition { 
       stringsMatch('${BUILD_REQUIRED}', 'true', false) 
      } 
      runner('Fail') 
      steps { 
       environmentVariables { 
        envs(environment); 
       } 
       batchFile(''' 
        call npm install 
        ''');     
       batchFile(''' 
        call mkdir buildArchive 
        '''); 
      } 
     } 
    } 
    publishers { 
     wsCleanup { 
      includePattern('build/**') 
     } 
    } 
    wrappers { 
     preBuildCleanup(); 
     timeout { 
      noActivity(300); 
      abortBuild(); 
     } 
    } 
    label(slaveLabel); 
} 
}; 

Так Дженкинс работа, которая будет создаваться показана как

npm install 
mkdir buildArchive 

Conditional step 

Вместо

Conditional step 
{ 
    npm install 
    mkdir buildArchive 
} 

Что я делаю неправильно Вот?

+0

Что делает _ "... указанные шаги находятся вне до условного блока ..." _ означает? –

+0

@tim_yates обновил описание выше. Я вижу команды вне выше условного шага, а не внутри него. – NxC

ответ

2

При создании задания с конфигурацией шагов

job('foobar') { 
    steps { 
     conditionalSteps { 
      condition { 
       stringsMatch('${BUILD_REQUIRED}', 'true', false) 
      } 
      runner('Fail') 
      steps { 
       environmentVariables { 
        envs(FOO: 'bar', TEST: '123') 
       } 
       batchFile('call npm install')    
       batchFile('call mkdir buildArchive') 
      } 
     } 
    } 
} 

результат кажется прекрасным:

enter image description here

По моему опыту, если у вас есть какие-либо проблемы с работой DSL синтаксисом и его результаты, хороший подход заключается в том, чтобы различить config.xml вашей работы:

  • Вручную сконфигурируйте свою работу, как вы хотите, и сохраните файл config.xml
  • Создайте свою работу локально и сохраните файл config.xml
  • Сбросьте два файла конфигурации и обратите внимание на точный тег XML заказ
  • Затем методом проб и ошибок, чтобы увидеть, что происходит при изменении работы DSL скрипт

когда я начал использовать DSL работы без опыта с заводной - особенно затворами) - у меня было много из-за проблем, когда я пытался извлечь блоки настройки работы в такие методы, как в вашем случае. Это помогло мне понять, что происходит на самом деле.