对于长期运行的构建,Jenkins如何处理以下方案?

时间:2019-03-24 21:44:16

标签: jenkins jenkins-pipeline

我想知道以下情况下的詹金斯工作流程是什么。

方案1:

让我们说一个构建工作需要30分钟才能完成,与此同时,开发人员在第一分钟提交了提交1、2和3,然后在第15分钟提交了提交4、5。如果SCM更改的轮询频率为1分钟,詹金斯​​会在队列中创建2个单独的构建作业吗?还是将所有5个提交合并到一个构建作业中?

方案2:

此外,如果将静默期设置为5分钟且SCM轮询频率设置为1分钟,并且长时间运行的构建作业正在运行,并且同时在第1分钟,第4分钟,第11分钟有5次提交,将会发生什么情况,在开始上一个构建作业之后的第15分钟和第16分钟?它将仍然向队列添加两个构建作业吗?还是将这5次提交合并到一个版本中?

1 个答案:

答案 0 :(得分:0)

如果每分钟轮询一次,则在方案#1中,詹金斯将启动两个单独的作业,一个作业用于提交1、2和3,第二个作业用于提交4和5。

对于场景2,根据您的示例,如果闲置时间为5分钟,詹金斯​​还将创建两个作业。

有一些解决方案可以解决同时运行的新旧版本的问题。一种选择是使用Milestone Pipeline plugin自动中止多个并发作业,一旦其中一个达到了里程碑。

第二个是某些SCM插件(例如GitHub插件)支持构建触发器Cancel build on update功能,当通过更新触发新任务时,该功能将自动停止运行任务。

第三个选择是使用Groovy脚本,该脚本作为构建的一部分执行,并使用detects running jobs for older commits and aborts them