如何在某个时间通过另一个作业触发一个 Jenkins 作业?

How to trigger a Jenkins job by another job at a certain time?

我有两份工作,JobA 和 JobB,JobA 运行 每天 13:00 并登记一些付款。我希望 JobA 触发验证付款的 JobB,当且仅当 JobA 成功并且 JobB 需要在第二天 04.00

运行

知道怎么做吗?

BR

我还没有找到任何可以开箱即用的东西。当然,您可以安排一个作业定期构建,但这并不是您想要的全部。

您可以尝试这两个想法中的一个(我自己都没有实现)。

  1. 将 JobB 设置为在凌晨 4 点定期构建,但停用该作业。如果 JobA 成功(例如,在项目中设置 JobA 以查看部分),则创建一个带有构建触发器的中间作业。中间作业将使用 运行 代码来激活 JobB - 使用 groovy 插件的 groovy 代码最简单,或者您可以通过 shell 使用其余的 api /批处理脚本。然后作为 JobB 中的最后构建步骤,运行 一个类似的脚本再次停用该作业。
  2. Schedule Build Plugin 允许您安排未来的构建。但是,这似乎是一个手动过程。如果您能弄清楚如何通过此插件以编程方式触发预定构建,则可以将该代码添加到以与选项 #1 中提到的相同方式设置的中间作业。

您可以使用构建作业:管道中的步骤 (https://jenkins.io/doc/pipeline/steps/pipeline-build-step/) 和以秒为单位的相当一段时间以在需要的时间触发作业。

编辑:

我的做法

def currentDate = GregorianCalendar.getInstance()

如果你想第二天早上 5 点

def plannedDate = new GregorianCalendar(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH) + 1, 5, 0)

def quietPeriod = (plannedDate.getTime().getTime() - currentDate.getTime().getTime())/1000