Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jenkins管道中以代码形式执行字符串_Jenkins_Groovy_Jenkins Pipeline - Fatal编程技术网

在Jenkins管道中以代码形式执行字符串

在Jenkins管道中以代码形式执行字符串,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我想在Jenkins管道中执行多个并行步骤。我需要的所有变量都通过ArrayList给出。现在我想通过字符串生成器和for循环来构建代码。之后,我想将字符串作为代码执行 伪代码: sb << try{ \n for(i=0; i<TMP; i++) { sb << parallel( build VARIABLE{ def BUILDJOBNAME = build job: BUILDJOBVARIABLE, parame

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

伪代码:

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){
 (...)
}

sb我们使用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
}
deftests=[“test1”、“test2”、“test3”、“test4”];
试一试{
def分支=[:];
对于(int i=0;i

分支中的每个元素都是一个并行执行路径。

GroovyShell.evaluate
是一个实例方法而不是类方法。哇,这比我的想法要好得多;)我试试看