如何同时 运行 两个 Jenkins 多阶段作业?

How to run two Jenkins multi phase Jobs at the same time?

我有两组多阶段作业,parallel test 1parallel test 2;我需要同时执行两个组。

multi job jenkins 插件有 hack 吗?或任何替代品...

注意:我不希望所有 3 个工作都在同一个 MultiJob Phase

由于您不能 运行 在一个多作业阶段中完成这些作业,作为替代方案您可以使用 Jenkins 管道作业(Pipeline docs). Parallel stages execution can be achieved by using declarative pipeline parallel 块。一个虚拟示例,说明如何通过以下方式实现您的多作业管道:

pipeline {
    agent any
    stages {
        stage('MultiJob like stage') {
            parallel {
                stage('Parallel Test') {
                    steps {
                        echo "Here trigger job: allure_behave. Triggered at time:"
                        sh(script: "date -u")
                        // build(job: "allure_behave")
                    }
                }
                stage('Parallel Test 2') {
                    steps {
                        echo "Here trigger job: allure_behave_new. Triggered at time:"
                        sh(script: "date -u")
                        // build(job: "allure_behave_new")
                        echo "Here trigger job: allure_behave_old. Triggered at time:"
                        sh(script: """date -u""")
                        // build(job: "allure_behave_old")
                    }
                }
            }
        }
    }
}

在这种情况下,您有一个名为 MultiJob like stage 的阶段,它具有子阶段 Parallel TestParallel Test 2,就像在您的 MultiJob 中一样。不同之处在于这两个子阶段都是并行执行的。

要从管道作业内部触发其他作业,请使用 build 步骤:

build(job: "job-name")

或者,如果您需要 运行 它带有参数,那么只需添加 parameters build() 选项:

build(job: "${JOB_NAME}", parameters: [string(name: 'ENVNAME', value: 'EXAMPLE_STR_PARAM')])

蓝色海景:

输出:

Running on Jenkins in /var/jenkins_home/workspace/Dummy_pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (MultiJob like stage)
[Pipeline] parallel
[Pipeline] { (Branch: Parallel Test)
[Pipeline] { (Branch: Parallel Test 2)
[Pipeline] stage
[Pipeline] { (Parallel Test)
[Pipeline] stage
[Pipeline] { (Parallel Test 2)
[Pipeline] echo
Here trigger job: allure_behave. Triggered at time:
[Pipeline] sh
[Pipeline] echo
Here trigger job: allure_behave_new. Triggered at time:
[Pipeline] sh
+ date -u
Thu Nov 22 18:48:56 UTC 2018
+ date -u
Thu Nov 22 18:48:56 UTC 2018
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] echo
Here trigger job: allure_behave_old. Triggered at time:
[Pipeline] sh
+ date -u
Thu Nov 22 18:48:56 UTC 2018
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

此替代方案对您的用例有效吗?

此致