我想知道以下情况下的詹金斯工作流程是什么。
方案1:
让我们说一个构建工作需要30分钟才能完成,与此同时,开发人员在第一分钟提交了提交1、2和3,然后在第15分钟提交了提交4、5。如果SCM更改的轮询频率为1分钟,詹金斯会在队列中创建2个单独的构建作业吗?还是将所有5个提交合并到一个构建作业中?
方案2:
此外,如果将静默期设置为5分钟且SCM轮询频率设置为1分钟,并且长时间运行的构建作业正在运行,并且同时在第1分钟,第4分钟,第11分钟有5次提交,将会发生什么情况,在开始上一个构建作业之后的第15分钟和第16分钟?它将仍然向队列添加两个构建作业吗?还是将这5次提交合并到一个版本中?
答案 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。