繁体   English   中英

詹金斯有条件的步骤时髦脚本

[英]Jenkins conditionalstep groovy script

我尝试使用此条件多步骤插件并为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);
 }
};

因此,创建的詹金斯工作显示为

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

结果似乎很好:

在此处输入图片说明

以我的经验,当您对Job DSL语法及其结果有任何疑问时,一个好的方法是对作业的config.xml进行比较:

  • 根据需要手动配置作业,然后保存config.xml
  • 在本地生成作业并保存config.xml
  • 区分两个配置文件并查找确切的XML标记顺序
  • 然后反复试验以查看更改Job DSL脚本时发生了什么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM