0

现在我在 Jenkins 中使用执行 shell 构建。

(目前)下面的代码是按顺序构建的。我想并行实现这一点。

现在代码状态

  • (我想要)构建动作-> test1.py ~ test4.py 并行执行

  • 有没有办法以这种方式(执行shell)或其他策略并行构建?

4

1 回答 1

0

你有几个选项可以在 Jenkins 管道中并行运行。
第一个选项是使用静态并行指令阶段,它允许您在声明性管道中轻松定义并行阶段,例如:

pipeline {
    agent any
    stages {
        stage('Non-Parallel Stage') {
            steps {
                echo 'This stage will be executed first.'
            }
        }
        stage('Parallel Stages') {
            parallel {
                stage('Test 1') {
                    steps {
                        sh "python3 $WORKSPACE/folder/test1.py"
                    }
                }
                stage('Test 2') {
                    steps {
                        sh "python3 $WORKSPACE/folder/test2.py"
                    }
                }
                .....
            }
        }
    }
}

第二个也是更动态的选项是使用内置parallel 关键字,它采用从分支名称到闭包的映射:

parallel firstBranch: {
    // do something
}, secondBranch: {
    // do something else
},
failFast: true|false

并使用它来动态创建并行执行步骤,例如:

tests = ['test1','test2','test3', 'test4']
parallel tests.collectEntries{ test ->
    ["Running test ${test}" : {
        sh "python3 $WORKSPACE/folder/${test}.py"
    }]
}

此代码可以驻留在脚本化管道中的任何位置,也可以驻留在script声明性管道中的指令中。

于 2021-07-22T13:40:48.513 回答