如何在构建后操作中保持当前的Jenkins作业执行直到依赖项作业完成

时间:2019-01-31 18:38:21

标签: java jenkins continuous-integration jenkins-pipeline jenkins-plugins

我有一个场景可以在POST BUILD ACTION中触发另一个构建,这将需要1m的时间来完成,我只想使当前构建等待该依赖项作业完成(持续时间为1m)并更新状态(COMPLETED) ,失败,不稳定)。

这就像我有一个名为A和B的工作。B是需要在JOB A中的POST BUILD ACTION中运行的依赖项。一旦JOB B完成执行(持续时间为1M),我想发布JOB的状态答:需要保留作业A,直到在POST BUILD ACTION中完成作业B为止。

我该如何实现?任何潜在客户...

3 个答案:

答案 0 :(得分:1)

如果您不只在 Post Build (发布后版本)部分中进行限制,这非常容易(例如,当您仅在主版本稳定时才需要触发其他版本时,但是我认为1分钟的工作您根本不在乎)。

您只需要安装Parameterized Trigger插件,它将允许您在 Build 部分(而不是 Post Build )中添加Trigger/call builds on other projects部分)。并且您还需要启用Block until the triggered projects finish their builds选项以等待作业B完成并检查作业B的状态: enter image description here

答案 1 :(得分:0)

听起来像棘手的问题一样需要解决,因为POST BUILD意味着作业B将在作业A完成后触发。

您可以尝试并行触发作业A和作业B,并且对于作业B,您可以使用Execute shellsleep 5m添加一个构建步骤,以便作业B进入睡眠状态刚开始需要5分钟,然后它将运行您想要的实际作业。在Job A中,您可以有一个Shell脚本,该脚本将循环读取Job B的控制台输出,并在Job B的控制台产生输出Finished:之后结束循环,然后您可以继续执行逻辑根据作业输出。

要读取控制台输出,您可以循环执行以下操作(并为Finished:关键字使用grep):

curl -u ${USERNAME}:${TOKEN} {JENKINS_URL}/job/{JOB_NAME}/lastBuild/consoleText | grep {what you need}

答案 2 :(得分:0)

您需要将PostBuildScript插件与Parameterized Trigger插件一起使用。 PostBuildScript将为您提供一个称为“执行脚本”的构建后步骤,这将使您能够在构建后阶段添加“参数化触发器”构建步骤。因此,您可以将其配置为等待触发的作业完成。