Дженкинс: запускать одно задание вниз по течению на основе нескольких заданий вверх по течению - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы построить конвейер в Дженкинсе, в котором результат, основанный на нескольких заданиях в восходящем направлении, должен запускать одно задание в нисходящем направлении.

Например:

Job 1 --> Job 2 -->   Job 5 --> Job 6
          Job 3 -->
          Job 4 -->

Задание 1: когда новый фрагмент кода передается в производство Git, он должен запускать задания 2,3 и 4 (эту часть я смог запустить, используя опцию Построить другие задания в Action после сборки; хотя есть предложения по улучшению это также очень ценится).

Задания 2,3 и 4 - это регрессии для запуска на разных тестовых машинах.

Часть, которую я не могу выяснить, состоит в том, что только когда задания 2,3 и 4 успешны, она должна инициировать нижестоящее задание 5, и в конечном итоге 5 может запустить 6.

В настоящее время я использую плагин Build Pipeline, но он был успешным для одного (нисходящего) для многих (восходящих) заданий, а не наоборот.

Любая помощь / предложение / руководство очень ценится. Заранее спасибо! Ура !!

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

В дополнение к ответу @ CMassa (да, это работает - спасибо за ответ), я нашел Join Plugin от Jenkins, и он также отлично работает для этого сценария.

0 голосов
/ 02 ноября 2018

Вы можете сделать это, используя раздел «Построить после сборки других проектов» в разделе «Конфигурация триггеров» в задании 5. Там вы добавляете Job2, Job3 и Job4 в качестве зависимостей и устанавливаете опцию «Запускать только при стабильной сборке» (как на рисунке ниже). Это должно сделать работу, и будет ждать завершения трех работ.

Job trigger

Но это, как вы сказали, не достигает цели выполнения Job5, когда Job2,3 и 4 успешны (Job5 выполняется, даже если один из них не выполнен). Я думаю, что лучшее решение для вашего случая - это использовать новое задание и создать его как задание «Pipeline» (назовем это PipelineJob). Таким образом, вам не нужно редактировать каждое задание с его собственной конфигурацией и зависимостями, и вы можете легче настроить поведение конвейера. Также, благодаря распространению ошибок, он потерпит неудачу, если какая-то фаза тоже не удастся! Это должно работать как задумано:

pipeline {
    agent any
    stages{
        stage('Phase 1') {
            steps {
                build 'Job1'
            }
        }
        stage('Phase 2') {
            parallel {
                stage('Job 2') {
                    steps {
                        build 'Job2'
                    }
                }
                stage('Job 3') {
                    steps {
                        build 'Job3'
                   }
                }
                stage('Job 4') {
                    steps {
                        build 'Job4'
                   }
                }
            }
        }
        stage('Phase 3') {
            steps {
                build 'Job5'
            }
        }
        stage('Phase 4') {
            steps {
                build 'Job6'
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...