如果上游作业成功,如何将Jenkins作业配置为在特定时间运行?

时间:2018-01-25 05:22:16

标签: jenkins

我的用例:

工作A设定为周一至周五18:00。

工作B取决于工作A的成功,但应该只在周一至周五的06:00运行。 (周一早上的比赛将取决于周五晚上的比赛)。我更喜欢固定时间而不是工作之间的延迟。

在任何一个早晨,如果我看到Job A失败(因此Job B从未运行),我希望能够运行(修复)Job A然后立即触发Job B.

到目前为止我发现的仅提供了此用例的一部分。我修改了Pipeline,最近将我的Jenkins实例升级到2.89.3,所以我可以访问最新的功能和插件。文件系统触发似乎可行。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

您可以使用" Build Triggers"中提供的选项。 例如: Build Trigger

希望这对你有用!

答案 1 :(得分:0)

这是一个棘手的用例,因为通常你希望一个工作能够立即从另一个工作继续,而不是等待可能的三天。 当你想要它时,希望它能够直接运行,这进一步复杂化。

我不相信有一个“我已经完成了这个时候踢这个工作”的下游触发所以对于第一部分,我能想到的唯一的事情是:

  • 作业A一旦完成作业B,作业B就会立即行动,作业B会在其中设置时间检查程序,并在时间匹配时开始执行任务。
  • 或作业A伪造一个具有退出状态的文件,而作业B具有一个cron触发器,用于6am mon-fri并拾取这个伪影,然后运行或不依赖于文件内容

对于第二部分,您可以获得构建原因(有关管道实现的信息,请参阅how to get $CAUSE in workflow,并在https://issues.jenkins-ci.org/browse/JENKINS-41272上投票以获取使用沙箱时的功能)。 然后根据触发器

使管道的行为有所不同

即。如果您选择上面的第二个选项,那么在作业B中,如果由Cron触发,您可以执行此操作,然后根据需要执行操作。如果由Upstream触发,则无论如何都要运行。