Jenkins管道 - 并行阶段仅在最后阶段合并

时间:2016-12-10 16:53:41

标签: jenkins groovy jenkins-pipeline jenkins-blueocean

在提出这个问题之前,我尝试查看Jenkins管道文档,更重要的是issue JENKINS-38442

我想创建一个如下所示的管道: Modified screenshot

基本上,我希望并行阶段在不同阶段而不是下一阶段本身进行合并。这可能吗?

到目前为止我能做的最好的只有:Original Screenshot

以下是生成上述管道的管道代码:

node {
   def staticTests = [:]
   staticTests["unit tests"] = {stage('unit'){ }}
   staticTests["static analysis"] = {stage('static'){ }}

   def tests = [:]
   tests["functional"] = {stage('functional'){}}
   tests["performance"] = {stage('performance'){}}
   tests["security"] = {stage('security'){}}

   stage('prepare'){}
   stage('tests'){parallel(staticTests)}
   stage('build'){}
   stage('int'){}
   stage('regression'){}
   stage('qa'){}
   stage('tests'){ parallel(tests) }
   stage('prod'){}
}

哪些更改可以帮助我在上面粘贴的修改后的屏幕截图中根据需要创建管道?今天Jenkins管道甚至可以实现这一点吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你可以写

node {
  stage('prepare') {}
  parallel main: {
    stage('unit tests') {}
    stage('build') {}
    stage('int') {}
    stage('regression') {}
    stage('qa') {}
    parallel functional: {}, performance: {}, security: {}
  }, 'static analysis': {}
  stage('prod') {}
}

按照您的要求运行(如果我理解正确的话),但是Blue Ocean目前无法以适当的详细程度显示它,如JENKINS-38442中所述。