gpt4 book ai didi

Jenkins上游-下游作业-静默期

转载 作者:行者123 更新时间:2023-12-04 12:52:55 26 4
gpt4 key购买 nike

Jenkins 场景详情:
======================
- Jenkins 中的构建执行器数量(主/从):3
- UpStream 作业:USJob 并且此作业可以在任何构建执行器上运行
- DownStream 作业:DSJob 并且此作业有一个120 秒的静默期+ 它仅在特定构建执行器上运行。 p>


  • USJob 在构建步骤中有这个:echo "Happy Birthday James"完成这项工作需要 5 秒
  • DSJob 在构建步骤中有这个:echo "James bond is dead"完成这项工作需要 5 秒

现在,假设我们运行 USJob(父/UpStream 作业)5 次,这将 ---> 调用 DSJob(child/DownStream job)也是5次,那么,我要的是:

  1. Jenkins 应该运行 USJob 5 次,因此在每次调用期间调用 DSJob 子作业。
  2. DSJob 不会运行 DSJob(一旦从 USJob 调用它),DSJob 将闲置或排队“120 秒”(即设置为静默期)。

  3. 现在,如果我们看到这种情况,UPJob 将调用 DSJob 5 次,而 DSJob 将排在队列中,直到满足这段时间。因此,一旦静默期结束,Jenkins 将启动 DSJob。

我的问题:我想看到的是我可以在 DSJob(子作业)中设置什么设置/选项,以便 DSJob 只运行一次而不关心它被调用了多少次。换句话说:如果詹姆斯·邦德/某人死了一次,他就不会再死了! ......明白了!但是有人可以在他生日那天祝他生日快乐 N # 次。

-- 这个概念类似于在 TFS(Team Foundation Server - 在 Build Definition 的 TRIGGER 部分内)中以累积方式运行持续集成 (CI) 构建,即在源代码控制发生变化时立即运行构建,但累积所有对源代码控制的更改,直到正在运行的 CI 构建正在进行中,一旦完成,下一个 CI 构建将选择开发人员完成的所有其他源代码控制更改。

最佳答案

我同意,因为这是一种选择,我最终会选择这种方式。感谢分享埃尔达。我们基本上不想通过在工作区中放置文件来使用,因为我们在任何机器上的任何可用从站上运行作业,并且不想在所有机器/从站都可以访问的中央 NAS 上创建文件。另外,我不想让子/下游工作寻找父/上游工作(如果它以 X 状态完成)然后运行它。

我这样做的方法是在 DSJob 上使用设置为 120 秒的静默期 + 从 USJob 或 DSJob 的任何其他父级调用“DSJob”(您可以选择直接传递/或不传递参数/通过属性文件)+ 发现它工作正常。当我安排多个 USJob 时,第一次出现的 USJob 称为 DSJob 并等待 120 秒(或 X 秒,你想要什么),然后一旦 USJob 第一个作业完成,第二个 USJob 开始并完成并再次调用 DSJob 但这没有' 将一个新的 DSJob 放入队列中,尽管它只是碰到了剩余的 X 号。工作 DSJob 从 X 开始运行的秒数-无论到目前为止花费的时间..再次回到 X 秒,这很好。我还使用了“Build Blocker 插件”,但我只是用它来从逻辑上阐明我的观点,因为事情就像我想要的那样使用 DSJob 上设置的“安静期”概念。解决了!

关于Jenkins上游-下游作业-静默期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com