尝试在 Jenkins 中实现以下工作流程:触发器启动并行作业 A、B、C 和 D。一旦 A、B 和 C 完成,作业 X 就应该启动,对于作业 Y 也是如此,它应该在之后启动C 和 D。
工作流程草图:
-> A ->
Trigger -> B -> X -> Result 1
-> C =>
-> D -> Y -> Result 2
我从 Build Flow Plugin 开始但我不知道如何在不启动 C 两次的情况下设计工作流程:
parallel (
{
Xpre = parallel ([
first: { a = build("TGZ", subjob: "T1") },
second: { b = build("TGZ", subjob: "T2") },
third: { c = build("TGZ", subjob: "T3") }
])
build("TGZ", subjob: "X")
},
{
Ypre = parallel ([
third2: { c2 = build("TGZ", subjob: "T3") },
fourth: { d = build("TGZ", subjob: "T4") }
])
build("TGZ", subjob: "Y")
}
)
关于如何设计此工作流程而不运行 C 两次的任何线索?
最佳答案
在较新的 Workflow plugin 中,这是可能的,尽管仍然很尴尬。 :
def aDone = false
def bDone = false
def cDone = false
def dDone = false
平行a:{
运行A()
完成=真
},b:{
运行()
b完成=真
}, C: {
运行C()
c完成=真
},d:{
运行D()
d完成=真
}, X: {
等待{aDone && bDone && cDone}
运行X()
},y:{
等待{cDone && dDone}
运行Y()
}
JENKINS-27127讨论可能的增强功能。
关于Jenkins/构建工作流程 : Provide result of one parallel executed job to multiple jobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15243705/