4

我想按照图片中的说明设置并行阶段

在这种情况下,设置非常繁重,因此必须在 G1、G2 和 G3 的并行组开始之前完成一次。同时,stage : Initial Checks 有 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') {}
}

你有没有遇到过类似的情况,你的解决方案是怎样的?

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

解决方案 2

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

    }
 }

管道

4

2 回答 2

3

DSL 或声明性管道尚不支持此功能。您实际上是在寻找这里提到的嵌套并行阶段

Jenkins 社区的问题仍然存在,您可以在此处观看

在您给定的情况下,您可以并行启动阶段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"
         }
     }
}

输出看起来像这样

于 2017-11-18T09:40:08.023 回答
-1

我想你正在寻找这个

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

                },
                "secondTask" : {

               }
            )
        }

    }
于 2017-11-17T06:36:35.973 回答