如何同时 运行 两个 Jenkins 多阶段作业?
How to run two Jenkins multi phase Jobs at the same time?
我有两组多阶段作业,parallel test 1
和 parallel 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 Test
和 Parallel 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
此替代方案对您的用例有效吗?
此致
我有两组多阶段作业,parallel test 1
和 parallel 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 Test
和 Parallel 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
此替代方案对您的用例有效吗?
此致