詹金斯conditionalstep groovy脚本

时间:2016-02-05 02:09:05

标签: jenkins groovy conditional dsl

我尝试使用这个Conditional多步插件并为DSL编写了grrovy脚本,但是当我使用此代码进行引导时,列出的步骤在条件块之前,我在这里做错了什么?

参考: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);
 }
};

因此创建的jenkins作业显示为

npm install
mkdir buildArchive

Conditional step

而不是

Conditional step
{
   npm install
   mkdir buildArchive
}

我在这里做错了什么?

1 个答案:

答案 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')
            }
        }
    }
}

结果似乎很好:

enter image description here

根据我的经验,当您对Job DSL语法及其结果有任何问题时,一个好方法是区分您的作业的config.xml:

  • 按照您的意愿手动配置您的作业,并保存config.xml
  • 在本地生成作业并保存config.xml
  • 区分两个配置文件并查找确切的XML标记顺序
  • 然后试用和更改以查看更改Job DSL脚本时发生的情况

当我开始使用没有groovy经验的Job DSL时 - 尤其是闭包;) - 当我尝试将作业配置块提取到像你的情况一样的方法时,我遇到了很多类似的问题。这就是帮助我理解真实情况的原因。