如果另一个作业今天至少运行一次,则运行Jenkins作业

如果另一个作业今天至少运行一次,则运行Jenkins作业,jenkins,Jenkins,我想设置一个Jenkins作业(我们称之为a),它将每晚运行,并检查另一个Jenkins作业(我们称之为B)今天是否至少成功运行一次。我不希望B触发A,因为B可能每天运行多次,但我希望A只运行一次——如果B不运行,则根本不运行 我想过使用“条件步骤”选项,但我不确定如何配置条件。我所知道的检查另一个作业构建的时间戳的唯一方法是通过Jenkins restful API,但如果我通过shell中的curl命令进行检查,我必须公开Jenkins用户的密码,我不想这样做(更不用说必须在shell中解析

我想设置一个Jenkins作业(我们称之为a),它将每晚运行,并检查另一个Jenkins作业(我们称之为B)今天是否至少成功运行一次。我不希望B触发A,因为B可能每天运行多次,但我希望A只运行一次——如果B不运行,则根本不运行

我想过使用“条件步骤”选项,但我不确定如何配置条件。我所知道的检查另一个作业构建的时间戳的唯一方法是通过Jenkins restful API,但如果我通过shell中的curl命令进行检查,我必须公开Jenkins用户的密码,我不想这样做(更不用说必须在shell中解析json输出,我也宁愿避免这样做)


有什么建议吗?

这可能不是最好的方法,但可能有效:

使B在B成功运行后将日期写入文件F_B

在A运行后将日期写入文件F_A

跑步前,检查F_A和F_B,仅当F_A和F_B不同时才跑步

现在,您可以在B成功运行后使B触发A

或者你可以看看

将生成后步骤添加到B(仅当成功时),检查文件中的日期,并且仅当日期与此生成完成时的数据不同时才对其进行更改


将FSTrigger添加到并监视该文件。

您可以使用很好地实现这些功能:

  • 基本上,您可以将作业“a”的SCM“轮询”步骤作为检查作业“B”是否成功运行的groovy脚本来实现
  • 然后将“A”的SCM轮询间隔设置为一次/夜

您不必公开Jenkins用户密码,因为您可以将其作为变量传递(只需在全局设置中设置),您可以通过${env.varName}访问它。我想。。。B一天跑几次?如果B在当天某个时候失败了,那意味着什么呢?这是否意味着A可以跑步?B每天可以跑零次或更多次。当且仅当B至少成功运行一次时,A必须运行。是的,我可以在一个env变量中隐藏密码,但是curl的命令行会在输出日志中回响,它会在clear中列出密码。无论如何,我想知道,当我已经在Jenkins实例中运行时,为什么还要通过远程restful API再次进行身份验证。有没有更简单的方法来收集B的构建时间戳上的信息?在输出日志中从未看到过密码,我将密切关注。。乍一看,api似乎是一条出路。您是否需要浏览时间戳,一系列作业构建状态是否足够,如果成功,则继续?不幸的是,我必须查看时间戳,因为现有构建可能来自昨天,而不是今天。谢谢。那就行了。但是我们有云计算中的Jenkins(Cloudbees),作业在临时实例上运行,因此保持这样的状态虽然可能,但却是一件非常痛苦的事情。因此,也许您可以在某个地方建立一个数据库,并监视该数据库中的值。这将花费更多,但也应该有效。谢谢。这可能行得通。我将看看Cloudbees是否会提供脚本SCM插件。但他们可能会坚持要求每个Groovy脚本都经过特别批准。