【问题标题】:How to prevent parallel execution of two downstream jobs triggered from two different upstream jobs如何防止两个不同上游作业触发的两个下游作业并行执行
【发布时间】:2015-05-27 09:47:18
【问题描述】:

我有一个触发两个下游作业的作业 A,比如作业 B 和作业 C。这两个下游作业在主节点上并行执行。然后,作业 B 触发另一个作业,例如从节点上的作业 1,作业 C 几乎同时在同一个从节点上触发作业 2。此从节点上配置的执行器数量为 1,因为我不希望作业 1 和作业 2 同时运行。作业 2 排队,因为作业 1 已经在该从节点上运行。但是当作业 1 完成执行时,作业 2 会遇到 executor starvation 并卡住。

问题:- 作业 2 遇到执行器饥饿并卡住。

有没有什么方法可以让作业 1 完成执行后,作业 2 开始运行而不是获取堆栈。我也尝试过 Throttle concurrent builds 插件,但问题仍然存在。

提前致谢!

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    有几个插件可以实现资源管理:
    https://wiki.jenkins-ci.org/display/JENKINS/Lockable+Resources+Plugin
    https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin
    https://wiki.jenkins-ci.org/display/JENKINS/External+Resource+Dispatcher

    有些阻止作业执行,有些则让作业“等待”资源(在作业运行时)。

    您必须设置 Job1 和 Job2 以使用某些资源,以便它们可以相互等待。

    【讨论】:

    • 非常感谢!使用排除插件。作业 2 等待作业 1 完成,一旦作业 1 完成,作业 2 就开始执行。
    猜你喜欢
    • 2017-02-02
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多