Конфигурация для многоступенчатых параллельных этапов - PullRequest
0 голосов
/ 10 мая 2018

У меня есть моно-репо, содержащее несколько сервисов. В идеале я хочу протестировать каждый сервис параллельно. Каждая ветка имеет 2 этапа:

  • тест
  • тест

Чтобы дать что-то похожее на это:

           clone
          /    \
         /      \
        /        \
       /          \
  svc1-test    svc2-test
      |            |
  svc1-bench   svc2-bench
      \            /
       \          /
        \        /
         \      /
          notify

Сборка прошла бы, только если все ветви были успешными. Кроме того, мы могли бы рано провалить ветку и не выполнить сравнительный анализ, если тесты не пройдут для любой данной ветки.

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

Полагаю, что моим запасным решением было бы объединить тест + тест в одну стадию, но я думаю, что было бы неплохо их изолировать, тем более что зависимости могут различаться для каждого.

1 Ответ

0 голосов
/ 18 апреля 2019

Я искал что-то похожее и нашел ответ здесь пользователем cdieck .

Вот так это выглядит в Голубом океане.

Копирование же для быстрого ознакомления:

pipeline {
   agent none
   stages {
      stage("Example") {
         failFast true
         parallel {
            stage("win7-vs2012") {
               agent {
                  label "win7-vs2012"
               }
               stages {
                  stage("checkout (win7-vs2012)") {
                     steps {
                        echo "win7-vs2012 checkout"
                     }
                  } 

                  stage("build (win7-vs2012)") {
                     steps {
                        echo "win7-vs2012 build"
                     }
                  }

                  stage("test (win7-vs2012)") {
                     steps {
                        build 'test-win7-vs2012'
                     }
                  }
               } 
            }

            stage("win10-vs2015") {
               agent {
                  label "win10-vs2015"
               }
               stages {
                  stage("checkout (win10-vs2015)") {
                     steps {
                        echo "win10-vs2015 checkout"
                     }
                  } 

                  stage("build (win10-vs2015)") {
                     steps {
                        echo "win10-vs2015 build"
                     }
                  }

                  stage("test (win10-vs2015)") {
                     steps {
                        build 'test-win10-vs2015'
                     }
                  }
               } 
            }

            stage("linux-gcc5") {
               agent {
                  label "linux-gcc5"
               }
               stages {
                  stage("checkout (linux-gcc5)") {
                     steps {
                        echo "linux-gcc5 checkout"
                     }
                  } 

                  stage("build (linux-gcc5)") {
                     steps {
                        echo "linux-gcc5 build"
                     }
                  }

                  stage("test (linux-gcc5)") {
                     steps {
                        build 'test-linux-gcc5'
                     }
                  }
               } 
            }
         }
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...