【问题标题】:How can I create parallel stages in Jenkins scripted pipeline?如何在 Jenkins 脚本化管道中创建并行阶段?
【发布时间】:2021-09-14 21:48:20
【问题描述】:

我正在尝试在我的 Jenkins 管道代码中实现并行化,我可以在其中并行运行两个阶段。我知道这在声明性管道中是可能的,但我使用的是脚本化管道。

我试图通过这样做来实现这一点:

parallel(
    stage('StageA') {
        echo "This is branch a"
    },
    stage('StageB') {
        echo "This is branch b"
    }
  )

当我运行它并在 Blue Ocean 中查看它时,这些阶段不会并行运行,而是在 StageA 之后执行 StageB。 脚本化的詹金斯管道中是否可以有并行阶段?如果有,怎么做?

【问题讨论】:

  • 是的。 parallel() 函数采用 Map 的阶段(不是您的示例中的阶段列表),执行此操作。看看this answer

标签: groovy continuous-integration jenkins-pipeline continuous-deployment jenkins-groovy


【解决方案1】:

为脚本化管道尝试以下语法:

            parallel(
                    "StageA": {
                        echo "This is branch a"
                    },
                    "StageB": {
                        echo "This is branch b"
                    }
            )

在 Blue Ocean 中应该是这样的,这就是你所期望的吧?

如果您想在经典视图中查看阶段(和控制台输出),您可以像这样使用阶段:

 parallel(
                        "StageA": {
                            stage("stage A") {
                                echo "This is branch a"
                            }
                        },
                        "StageB": {
                            stage("stage B") {
                                echo "This is branch b"
                            }
                        }
                )

【讨论】:

    【解决方案2】:

    这对我有用

        stage('Check code quality') {
          parallel {
            stage('Run prospector') {
              when {
                expression { params.SKIP_PROSPECTOR == false }
              }
    
              steps {
                checkout scm
                sh 'echo "Running prospector..."'
                sh 'make dockerized-run-prospector'
              }
            }
    
            stage('Run Tests') {
              when {
                expression { params.SKIP_TESTS == false }
              }
    
              steps {
                checkout scm
                sh 'echo "Running tests..."'
                sh 'make dockerized-test'
              }
            }
          }
        }
    

    这会在父阶段并行运行阶段。 詹金斯蓝显示它是这样的

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2022-10-27
      • 1970-01-01
      相关资源
      最近更新 更多