在并行阶段之前的jenkins声明性管道中创建顺序步骤

时间:2017-11-17 06:19:08

标签: jenkins parallel-processing jenkins-pipeline jenkins-declarative-pipeline

我想设置图像

中描述的并行阶段

在这种情况下,设置非常繁重,因此必须在并行组启动G1,G2和G3之前完成一次。同时,阶段:初始检查有2个项目,我想并行运行。

这可以在声明性管道中使用,还是必须使用脚本?

我在文档中看不到这种工作的能力

Stages {
    stage ('P1') {
    }
    stage ('P2 Setup') {}
    stage ('P2') {
    //Here it can contain either Steps or Parallel. I can only do
       parallel {
          stage ('g1') {} //Parallel tests
          stage ('g2') {}
          stage ('g3') {}
       }
    }
    stage ('P2 Cleanup') {}
}

您是否遇到过类似情况以及您的解决方案是什么样的?

当然,解决方法是将安装和清理作为每个组的一部分,但就像我说的那样,它非常密集,如果图表显示的是不可能,我只会接受它。

解决方案2

 stage ('p2') {
    script {
      //Some scripting here to get the result?

    }
 }

Pipeline

2 个答案:

答案 0 :(得分:1)

DSL或声明性管道尚不支持此功能。您基本上正在寻找嵌套并行阶段,如here

所述

问题仍在Jenkins社区开放,您可以查看here

在您的情况下,您可以并行启动阶段 P1 和阶段设置。但是,将P1作为后台进程启动非常重要,因为从图中可以看出P1是一个耗时的操作。 阶段完成后,您可以收集P1的状态并继续 S2

stages{
   stage('Build'){
        steps{
              echo "Build"
         }
     }
   stage('Init'){
        parallel{
             stage('P1'){steps{ echo "launch p1 in background"}}
             stage('setup'){steps{echo "setup"}}
           }
     }
   stage('Group'){
        parallel{
             stage('P1'){steps{echo "p1"}}
             stage('P2'){steps{echo "p2"}}
             stage('P3'){steps{echo "p3"}}
           }
     }
   stage('Cleanup'){
        steps{
              echo "cleanup"
         }
     }
   stage('Check P1 status'){
        steps{
              echo "Check"
         }
     }
  stage('S2'){
        steps{
              echo "S2"
         }
     }
}

Output will look like thi

答案 1 :(得分:-1)

我认为你正在寻找这个

  node {
        stage("P1"){}
        stage("p2") {}
        stage("p3") {
          parallel (
                "firstTask" : {

                },
                "secondTask" : {

               }
            )
        }

    }