Jenkins 条件步骤 groovy 脚本
Jenkins conditionalstep groovy script
我尝试使用此条件多步插件并为 DSL 编写了 grrovy 脚本,但是当我 bootstrap 使用此代码时,列出的步骤在条件块之前,我在这里做错了什么?
代码:
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
}
我做错了什么?
当您使用步骤配置生成作业时
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')
}
}
}
}
结果似乎不错:
根据我的经验,当您对作业 DSL 语法及其结果有任何问题时,一个好的方法是比较作业的 config.xml:
- 根据需要手动配置作业,然后保存 config.xml
- 在本地生成作业并保存 config.xml
- 区分两个配置文件并找出确切的 XML 标签顺序
- 然后反复试验,看看更改作业 DSL 脚本时发生了什么
当我开始使用 Job DSL 时没有 groovy 的经验 - 特别是闭包 ;) - 当我尝试将作业配置块提取到方法中时,我遇到了很多类似的问题,就像你的情况一样。这就是帮助我理解真正发生的事情的原因。
我尝试使用此条件多步插件并为 DSL 编写了 grrovy 脚本,但是当我 bootstrap 使用此代码时,列出的步骤在条件块之前,我在这里做错了什么?
代码:
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
}
我做错了什么?
当您使用步骤配置生成作业时
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')
}
}
}
}
结果似乎不错:
根据我的经验,当您对作业 DSL 语法及其结果有任何问题时,一个好的方法是比较作业的 config.xml:
- 根据需要手动配置作业,然后保存 config.xml
- 在本地生成作业并保存 config.xml
- 区分两个配置文件并找出确切的 XML 标签顺序
- 然后反复试验,看看更改作业 DSL 脚本时发生了什么
当我开始使用 Job DSL 时没有 groovy 的经验 - 特别是闭包 ;) - 当我尝试将作业配置块提取到方法中时,我遇到了很多类似的问题,就像你的情况一样。这就是帮助我理解真正发生的事情的原因。