当前位置: 首页 > 知识库问答 >
问题:

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

谷梁淇
2023-03-14

我的使用案例:

作业 A 设置为在星期一到星期五的 18:00 运行。

作业 B 依赖于作业 A 是否成功,但应仅在周一至周五的 06:00 运行。(周一早上的跑步将取决于周五晚上的跑步)。我更喜欢设定的时间,而不是工作之间的延迟。

在任何给定的早晨,如果我看到作业A失败(因此作业B从未运行),我希望能够运行(修复)作业A,然后立即触发作业B。

到目前为止,我发现的只是这个用例的一部分。我修改了管道,最近将我的Jenkins实例升级到2.89.3,这样我就可以访问最新的功能和插件。文件系统触发似乎是可行的。

任何建议都值得赞赏。

共有2个答案

戈曾琪
2023-03-14

这是一个棘手的用例,因为通常你希望一个工作立即从另一个工作开始,而不是等待可能的三天。更复杂的是,你希望它在你想要的时候直接运行。

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

  • 工作A一完成就踢工作B,工作B坐在那里,里面有一个时间检查器,当时间匹配时开始它的任务。
  • 或作业A工件具有其退出状态的文件,作业B在早上6点星期一至星期五有一个cron触发器,并拾取此工件,然后运行或不依赖于文件内容

对于第二部分,您可以获得构建原因(参见如何在管道实现的工作流中获得$Cause,并在使用沙盒时对https://issues.jenkins-ci.org/browse/JENKINS-41272进行投票以获得该特性)。然后让您的管道根据触发器表现不同

也就是说,如果你选择了上面的第二个选项,那么在作业B中,如果被Cron触发,你可以读取人工制品并根据需要进行操作。如果由上游触发,则不管如何运行。

林博厚
2023-03-14

您可以使用“构建触发器”中的选项。例如:构建触发器

希望这对你有用!

 类似资料:
  • 我正在试用Quartz调度器,并使用Maven使其与Spring一起工作。 我需要做的是将Quartz配置为存储作业,以便在计划的时间内执行作业。据我所知,石英中有两种类型的触发器,Simple和Cron。我还发现石英中有一种叫做JobStore的东西。我在某种程度上对它进行了配置。 有人能给我一个关于如何设置Quartz JobStore的好的参考资料吗?帮了大忙,谢谢。

  • 问题内容: 我如何每隔15分钟在Jenkins上执行一次定时任务? 这是我尝试过的: 在詹金斯上,我有一个作业设置为使用以下cron语法每15分钟运行一次: 但是作业将每小时执行一次,而不是每15分钟执行一次。 我收到有关cron语法格式的警告: 这可能是cron作业每小时执行一次而不是15分钟执行一次的原因吗? 问题答案: 您的语法略有错误。说: 表示cron表达式与该字段的所有值匹配。 描述范

  • 问题内容: 我阅读了如何使用Jenkins DSL设置作业超时。设置一项作业的超时时间。我想为所有作业设置它,并且设置略有不同:150%,平均超过10个作业,最多30分钟。 根据相关的job-dsl-plugin文档,我应该使用以下语法: 我在http://job-dsl.herokuapp.com/中进行了测试,这是相关的XML部分: 我使用之前手动编辑过的作业进行了验证,并且XML是正确的。因

  • 如果Jenkins下游作业的任何上游作业失败或不稳定,那么阻止或失败的最佳方法是什么? 目前,我已经勾选了“当上游项目正在构建时阻止构建”选项,并且运行良好,因为我的下游作业正在等待所有上游作业完成构建。但是,如果任何上游失败或不稳定,我不想构建作业。 谢啦

  • 现在我每天下午3点运行我的cron作业 但是我想一天运行两次cron作业。上午10点30分和下午2点30分 我相信此命令将在上午 10:30 运行。我应该如何在下午 2:30 运行它?

  • 问题内容: 我想创建一个Jenkins作业来启动其他Jenkins作业。那将非常容易,因为Jenkins模板项目插件允许我们创建一个类型为“使用来自另一个项目的构建器”的构建步骤。但是,使我的情况更难的是,我必须在其他计算机上开始Jenkins的工作。有什么标准方法可以做到吗? 问题答案: 万一您只想触发Job的新版本,您有多种方法可以完成它 您可以使用远程访问API并触发请求以从源Job构建目标