Последовательные этапы внутри параллельного синтаксиса Scripted Pipeline

В моем файле Jenkins я выполняю 2 этапа параллельно, и один из этих этапов будет состоять из нескольких других последовательных этапов. Когда я запускаю скрипт и проверяю конвейер в BlueOcean, эта последовательность этапов представляется как один единственный узел.

(Упрощенный) сценарий выглядит следующим образом:

node {
    stage('Stage 1') {...}
    stage('Stage 2') {...}
    stage('Stages 3 & 4 in parallel') {
        parallel(
            'Stage 3': {
                stage('Stage 3') {...}
            },
            'Stage 4': {
                stage('Stage 4a') {...}
                stage('Stage 4b') {...}
            }
        )
    }
}

Итак, в BlueOcean этот сценарий приводит к одному узлу для этапа 4, в то время как я хочу видеть два узла, поскольку он состоит из двух последовательных этапов.


person C. Güzelhan    schedule 14.02.2020    source источник
comment
Как вы заметили, скриптовый конвейер, похоже, плохо обрабатывается в Blue Ocean UI. Я не вижу причин по-прежнему использовать синтаксис сценариев, поскольку вы можете иметь script блоков в декларативном синтаксисе, если вам нужно более свободно кодировать.   -  person zett42    schedule 14.02.2020


Ответы (2)


Я тоже столкнулся с той же проблемой со сценариями конвейеров. Если вас устраивают декларативные конвейеры, вы можете использовать это:

pipeline {
    agent any
    stages {
        stage('Stage 1') { steps {pwd()}}
        stage('Stage 2') { steps {pwd()}}
        stage('Stages 3 & 4 in parallel') {
            parallel {
                stage('Stage 3') { steps {pwd()}}
                stage('Stage 4') {
                    stages {
                        stage('Stage 4a') { steps {pwd()}}
                        stage('Stage 4b') { steps {pwd()}}
                    }
                }
            }
        }
    }
}

введите описание изображения здесь

person Dibakar Aditya    schedule 14.02.2020
comment
Спасибо за решение. Потребовался некоторый рефакторинг, чтобы перейти от сценариев к декларативным, но это выглядит лучше. :) - person C. Güzelhan; 24.02.2020

С последней версией jenkins 2.235.3 и последними плагинами теперь это работает в конвейере сценариев.

изображение сценария конвейера

node ('fetch') {
   stage('Stage 1') { sh(script:"echo Stage1",label: "sh echo stage 1")}
   stage('Stage 2') { sh(script:"echo Stage2",label: "sh echo stage 2")}
   stage('Stages 3 & 4 in parallel') {
       parallel(
           'Stage 3': {
            stage('Stage 3') {sh(script:"echo Stage3",label: "sh echo stage 3")}
           },
          'Stage 4': {
              stage('Stage 4a') {sh(script:"echo Stage4a",label: "sh echo stage 4a")}
              stage('Stage 4b') {sh(script:"echo Stage4b",label: "sh echo stage 4b")}
          }
      )
   }
}
person Damien Merlin    schedule 04.08.2020
comment
Этот работает, но в основном представляет собой декларативный конвейер, замаскированный под скрипт. - person Eduardo; 27.01.2021