我尝试使用这个Conditional多步插件并为DSL编写了grrovy脚本,但是当我使用此代码进行引导时,列出的步骤在条件块之前,我在这里做错了什么?
代码:
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);
}
};
因此创建的jenkins作业显示为
npm install
mkdir buildArchive
Conditional step
而不是
Conditional step
{
npm install
mkdir buildArchive
}
我在这里做错了什么?
答案 0 :(得分: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')
}
}
}
}
结果似乎很好:
根据我的经验,当您对Job DSL语法及其结果有任何问题时,一个好方法是区分您的作业的config.xml:
当我开始使用没有groovy经验的Job DSL时 - 尤其是闭包;) - 当我尝试将作业配置块提取到像你的情况一样的方法时,我遇到了很多类似的问题。这就是帮助我理解真实情况的原因。