【问题标题】:How does Jenkins handle the following scenarios for long running builds?Jenkins 如何为长时间运行的构建处理以下场景?
【发布时间】:2019-03-25 06:53:28
【问题描述】:

我想知道下面场景中的jenkins工作流是什么。

场景一:

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

场景 2:

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

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    如果每分钟轮询一次,在场景 #1 中,Jenkins 将启动两个单独的作业,一个用于提交 1、2 和 3,另一个用于提交 4 和 5。

    根据您的示例,对于场景 #2,如果静默期为 5 分钟,Jenkins 还将创建两个作业。

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

    第二个是一些 SCM 插件,例如 GitHub 插件,支持构建触发器Cancel build on update 功能,当通过更新触发新作业时,该功能将自动停止正在运行的作业。

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

    【讨论】:

    • 非常感谢。一个后续问题,如果管道未配置为同时运行,那么在这种情况下,所有 5 次提交都会有一个构建吗?
    • 是的,如果禁用并发构建,则第一个构建必须在任何后续构建开始之前结束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多