在Jenkins管道中执行String作为代码

时间:2017-08-21 08:58:23

标签: jenkins groovy jenkins-pipeline

我想在Jenkins管道中执行多个并行步骤。我需要的所有变量都是通过ArrayLists给出的。现在我想通过字符串构建器和for循环构建代码。之后我想执行字符串作为代码

伪代码:

imageview

但我怎么能执行这个呢?我试过了sb << try{ \n for(i=0; i<TMP; i++) { sb << parallel( build VARIABLE{ def BUILDJOBNAME = build job: BUILDJOBVARIABLE, parameters: [ string(name: 'parametername', value: PARAMETER) ] } } sb << catch(e){ (...) } 但是这会导致以下错误:

  

hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:java.lang.Class.evaluate()适用于参数类型:(java.lang.String) < / p>

1 个答案:

答案 0 :(得分:1)

我们使用Groovy哈希来定义并行步骤并在一个并行语句中执行它们:

def tests = ["test1", "test2", "test3", "test4"];

try {
    def branches = [:];
    for (int i = 0; i < tests.size(); i++) {
        def test = tests[i];
        branches["$test"] = {
            try
            {
                env.test = test;
                build job: 'BUILD_JOB', parameters: [string(name: 'NAME', value: test)]
            }
            catch (err)
            {
                currentBuild.result = 'FAILURE';
            }
        }
    }

    parallel branches
}

branches哈希中的每个元素都是一个并行执行路径。

相关问题