【问题标题】:Jenkins pipeline with polling triggers multiple times多次轮询触发器的 Jenkins 管道
【发布时间】:2018-03-24 20:16:54
【问题描述】:

我用这个头文件创建了许多脚本语法 Jenkinsfiles:

properties([
    pipelineTriggers([
        pollSCM('H/5 * * * *')
    ])
])

它们几乎总是每次提交至少触发两次。提交后 5 分钟内一次,第一次构建后 5 分钟内再次。构建时间少于 5 分钟,这意味着在第一个构建完成后触发第二个构建。 Jenkins 日志显示两个触发器是相同的,好像第二个构建不知道第一个构建。

我不明白这不是一个更大的问题。它使持续部署变得极其危险。我错过了什么吗?

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    首先,H/5 * * * * -> H 表示尽可能在接下来的 5 分钟内运行。因此,如果构建是在一小时的第 1 分钟运行的,那么第二个可能会尽可能在第 6-10 分钟运行(考虑其他作业是否正在运行)。而且你也没有提到任何关于停止并发构建的事情。因此它将根据您的配置运行。

    您可以通过将其添加到脚本中来停止构建多个并行。

    options { disableConcurrentBuilds() }
    

    希望这会有所帮助。

    【讨论】:

    • 这并不能解释我所看到的行为。这是一个示例时间线:12:00 - commit pushed 12:03 - build 1 starts 12:05 - build 1 finishes 12:07 - build 2 starts 一次提交触发两个构建没有任何意义
    • 嗯,这令人难以置信的混乱,但你让我走上了正确的道路。这:“如果您想要 SCM 轮询,您应该在轮询间隔运行扫描,因为扫描将对所有分支执行一次有效扫描,而不是每个分支扫描。”是一个很好的线索。我禁用了项目扫描,双重构建停止发生。但是现在该项目没有更新新的分支。需要进一步研究。
    猜你喜欢
    • 2022-11-08
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多