2

我想在 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)
4

3 回答 3

2

看看Jenkins Locks and Latches 插件

于 2012-04-03T21:37:17.657 回答
2

所以,这是我找到的解决方案:

使用 Jenkins Parameterized Trigger 插件,可以使用额外的构建步骤:

在其他项目上触发/调用构建

在 Job1 上添加三个构建触发器:

建设项目:JobA

[ x ] 阻塞直到触发的项目完成它们的构建

建设项目:JobB

[ x ] 阻塞直到触发的项目完成它们的构建

建设项目:JobC

[ x ] 阻塞直到触发的项目完成它们的构建

在 Job2 上做同样的事情。

添加一个在两个作业 1 和 2 之间共享的锁。

这样,当 Job 1 和 Job 2 被触发时,它们将相互等待。在所有 Job A->B>C 运行并成功之前,每个 Job 都不会被标记为通过。

更多选项可用于控制每个构建步骤的返回值,它是应该取决于触发作业的结果还是继续而不考虑结果。

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 
于 2012-04-06T14:46:33.190 回答
1

我想不出一种方法可以在 Jenkins 中完全按照您的意愿行事。也许詹金斯不是你的工具?

解决此问题的另一种方法是:您的问题实际上为您的问题提供了解决方案(一堆作业及其执行顺序),而您正在询问如何实现它。

你愿意解释你的目标是什么,你想达到什么目标?也许一些 Jenkins 专家可以告诉你如何使用 Jenkins 来做到这一点。

于 2012-04-04T20:19:28.373 回答