[英]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.