动态定义声明性jenkins管道中的并行步骤

pbn*_*pbn 5 groovy jenkins jenkins-pipeline jenkins-declarative-pipeline

我尝试并行化动态定义的函数集,如下所示:

def somefunc() {
    echo 'echo1'
}

def somefunc2() {
    echo 'echo2'
}

running_set = [
    { somefunc() },
    { somefunc2() }
]

pipeline {
    agent none
    stages{
        stage('Run') {
            steps {
                parallel(running_set)                
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终得到的是:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 17: No "steps" or "parallel" to execute within stage "Run" @ line 17, column 9.
           stage('Run') {
Run Code Online (Sandbox Code Playgroud)

虽然步骤是在"运行"阶段中定义的.无论如何,我想要实现的是一组动态定义的并行执行的函数.

Szy*_*iak 13

如果要将动态并行块与声明性管道脚本一起使用,则必须对Jenkinsfile应用两个更改:

  1. 您必须定义running_setMap类似["task 1": { somefunc()}, "task 2": { somefunc2() }]- 此映射中的键用作并行阶段名称
  2. 你必须传递running_set给块parallel内的方法script {}

以下是Jenkinsfile的更新结果:

def somefunc() {
    echo 'echo1'
}

def somefunc2() {
    echo 'echo2'
}

running_set = [
    "task1": {
        somefunc()
    },
    "task2": {
        somefunc2()
    }
]

pipeline {
    agent none
    stages{
        stage('Run') {
            steps {
                script {
                    parallel(running_set)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Blue Ocean UI中的样子:

在此输入图像描述