使Jenkins作业B(在Jenkins服务器X上运行)依赖于Jenkins A(在服务器Y上运行)

时间:2018-08-31 06:56:40

标签: jenkins jenkins-plugins jenkins-pipeline

我有两个作业在两个不同的Jenkins服务器计算机上运行。

职位A =>服务器Y(开发服务器)

职位B =>服务器X(测试服务器)

作业B,每15分钟连续运行365天。现在,当作业A运行时,作业B将失败,因为作业A是代码部署。因此,理想情况下,我的作业B应该保持并且在作业A运行期间不运行。

有人可以帮助实现此功能的任何插件或任何脚本,以及如何配置它。

简而言之,这两个作业不应同时运行

1 个答案:

答案 0 :(得分:0)

您的情况有两种选择:

  1. 将基础结构从两个Jenkins主服务器切换到一个Jenkins主服务器,并在服务器X和服务器Y上运行两个从服务器。然后您可以使用Build Blocker plugin
  2. 使用Jenkins REST API在服务器X和服务器Y之间进行通信。

    例如,作为作业B的第一步,您可以检查作业A是否处于运行状态:

    curl -X GET -i 'http://{y-host}:{y-port}/job/{job-A-name}/lastBuild/api/json'
    

    响应中有building属性,它可以显示当前的工作状态:

    {
        "building": false,
        "displayName": "#22",
        "duration": 127163,
        "estimatedDuration": 123022,
        // many more data...
    }
    

    如果作业A正在运行("building": true),则可以暂停或中止作业B。

    反之亦然,您可以在开始在服务器Y上部署之前检查测试是否在服务器X上运行。