[英]Is it possible to run a same jenkins build job in parallel stages in jenkins pipeline
[英]Jenkins Pipeline - build same job multiple times in parallel
我正在尝试在 Jenkins 中创建一个管道,它在不同的节点(代理)中多次触发相同的作业。
我有“Create_Invoice”作业 Jenkins,已配置:(如有必要,执行并发构建)如果我单击构建 10 次,它将在不同(可用)代理/节点中运行 10 次。
我不想点击 10 次,而是想创建一个并行管道。
我创建了类似下面的东西 - 它触发了工作但只有一次。 我错过了什么,或者是否有可能同时从管道中多次触发相同的测试?
先感谢您
node {
def notifyBuild = { String buildStatus ->
// build status of null means successful
buildStatus = buildStatus ?: 'SUCCESSFUL'
// Default values
def tasks = [:]
try {
tasks["Test-1"] = {
stage ("Test-1") {
b = build(job: "Create_Invoice", propagate: false).result
}
}
tasks["Test-2"] = {
stage ("Test-2") {
b = build(job: "Create_Invoice", propagate: false).result
}
}
parallel tasks
} catch (e) {
// If there was an exception thrown, the build failed
currentBuild.result = "FAILED"
throw e
}
finally {
notifyBuild(currentBuild.result)
}
}
}
我有同样的问题并通过将不同的参数传递给同一个作业来解决它。 您应该在构建步骤中添加参数,尽管您显然不需要它们。 例如,我添加了一个字符串参数。
tasks["Test-1"] = {
stage ("Test-1") {
b = build(job: "Create_Invoice", parameters: [string(name: "PARAM", value: "1")], propagate: false).result
}
}
tasks["Test-2"] = {
stage ("Test-2") {
b = build(job: "Create_Invoice", parameters: [string(name: "PARAM", value: "2")], propagate: false).result
}
}
只要相同的参数或没有参数传递给同一个作业,该作业只会被触发一次。
另请参阅此 Jenkins 问题,它描述了相同的问题:
https://issues.jenkins.io/browse/JENKINS-55748
此示例将从 Jenkins 中获取可用代理,并在所有活动代理中迭代和运行管道。
使用这种方法,您无需多次从上游作业调用此作业来构建不同的代理。 该作业本身将管理所有内容并运行所有在线节点中定义的所有阶段。
jenkins.model.Jenkins.instance.computers.each { c ->
if(c.node.toComputer().online) {
node(c.node.labelString) {
stage('steps-one') {
echo "Hello from Steps One"
}
stage('stage-two') {
echo "Hello from Steps Two"
}
}
} else {
println "SKIP ${c.node.labelString} Because the status is : ${c.node.toComputer().online} "
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.