多步并行阶段的配置

时间:2018-05-10 18:39:29

标签: drone drone.io

我有一个包含多项服务的mono-repo。理想情况下,我想并行测试每个服务。每个分支有两个阶段:

  • 测试
  • 基准

给出类似的东西:

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

只有在所有分支都成功的情况下,构建才会通过。此外,如果任何给定分支的测试失败,我们可能会提前失败并且不执行基准测试。

通过阅读文档,我看到如何使用group运行并行阶段,而不是如何将多个阶段放在一个分支中。

我想我的后备解决方案是将组合测试+基准测试放在一个阶段,但我认为隔离它们会很好,特别是因为每个依赖项可能会有所不同。

1 个答案:

答案 0 :(得分:0)

我在寻找类似的东西,发现它由用户here回答了cdieck

This is how it looks in Blue Ocean.

复制相同内容以供快速参考:

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'
                     }
                  }
               } 
            }
         }
      }
   }
}