我想在Jenkins中编写三个作业。
它们应该在触发它们的作业之后作为一个块运行:
Job1 -> [A,B,C]
Job2 -> [A,B,C]
现在当Job1被触发两次时,我得到以下行为:
Order that jobs are run now:
-Job1
-Job2
-A
-B
-(job A or C)
-Order is not guaranteed after this
我希望看到的是:
Order that jobs are run:
-Job1
-Job2
-A (from Job1)
-B (from Job1)
-C (from Job1)
------------
-A (from Job2)
-B (from Job2)
-C (from Job2)
答案 0 :(得分:2)
答案 1 :(得分:2)
所以,这是我找到的解决方案:
使用Jenkins参数化触发器插件,可以使用额外的构建步骤:
在其他项目上触发/调用构建
在Job1上添加三个构建触发器:
要构建的项目: JobA
[ x ]阻止,直到触发的项目完成 他们的构建
要构建的项目: JobB
[ x ]阻止,直到触发的项目完成 他们的构建
要构建的项目: JobC
[ x ]阻止,直到触发的项目完成 他们的构建
在Job2上执行相同操作。
添加两个作业1和2之间共享的锁。
这样,当作业1和作业2被触发时,它们将相互等待。并且在所有作业A-> B> C运行并且成功之前,每个作业都不会被标记为已通过。
可以使用更多选项来控制每个构建步骤的返回值,无论是依赖于触发作业的结果还是继续,无论结果如何。
Fail this build step if the triggered build is worse or equal to
Mark this build as failure if the triggered build is worse or equal to
Mark this build as unstable if the triggered build is worse or equal to
答案 2 :(得分:1)
我想不出一种方法可以完全按照你想要的方式完成Jenkins。也许詹金斯不是你的工具?
解决这个问题的另一种方法是:你的问题实际上是解决你的问题(一堆工作及其执行顺序),你问的是如何实现它。
您是否愿意解释您的目标是什么,您希望实现的目标是什么?也许一些Jenkins专家可以告诉你如何使用Jenkins来做到这一点。