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

Creating a sequential step in a jenkins declarative pipeline preceding a parallel stage

我想按照图片中的描述设置并行阶段

在这种情况下,设置非常繁重,因此必须在 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') {}
}

您遇到过类似的情况吗?您的解决方案是怎样的?

当然 1 解决方案是将设置和清理作为每个组的一部分,但就像我说的那样,它非常密集,只有在图表指示不可能的情况下我才会接受它。

解决方案 2

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

    }
 }

Pipeline

我想你正在找这个

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

                },
                "secondTask" : {

               }
            )
        }

    }

DSL 或声明式管道尚不支持此功能。您实际上是在寻找 嵌套 并行阶段,如前所述 here

Jenkins 社区的问题仍未解决,您可以观看 here

在您给定的情况下,您可以同时启动 P1 阶段和 setup 阶段。但是,将 P1 作为后台进程启动很重要,因为从图中可以看出 P1 是一项耗时的操作。一旦 group 阶段完成,您可以收集 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"
         }
     }
}