Сделать задачу Jenkins B (запущенной на сервере Jenkins X) зависимой от Jenkins A (работающей на сервере Y) - PullRequest
0 голосов
/ 31 августа 2018

У меня есть две работы на двух разных серверах Jenkins Server.

Задание A => Сервер Y (Сервер разработки)

Задание B => Сервер X (Тестовый сервер)

Задание B, выполняется каждые 15 минут непрерывно 365 дней. Теперь, когда задание A запускается, задание B не выполняется, поскольку задание A является развертыванием кода. Таким образом, в идеале моя Работа B должна удерживаться и не запускаться во время работы Job A.

Может кто-нибудь помочь с любым плагином, который может помочь в достижении этого или любого сценария и как его настроить.

Проще говоря, обе эти задачи не должны выполняться одновременно

1 Ответ

0 голосов
/ 31 августа 2018

В вашем случае есть два варианта:

  1. Переключите вашу инфраструктуру с двух мастеров Jenkins на одного мастера Jenkins с двумя подчиненными, работающими на сервере X и сервере Y. Затем вы можете использовать плагин Build Blocker .
  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.

    И наоборот, вы можете проверить, выполняются ли тесты на сервере X, прежде чем начинать развертывание на сервере Y.

...