在阶段的并行步骤完成后调用插件

Invoking a plugin after parallel step has completed for a stage

我有一个像这样的管道阶段

stage('Unit Tests') {
      steps {
        parallel (
          "Jasmine": {
            sh 'gulp karma-tests-ci'
          },
           "Mocha": {
            sh 'gulp mocha-tests'
          }
        )
      }
    }

我想在并行步骤完成后添加一个 junit 插件调用,我试过了

stage('Unit Tests') {
      steps {
        parallel (
          "Jasmine": {
            sh 'gulp karma-tests-ci'
          },
           "Mocha": {
            sh 'gulp mocha-tests'
          }
        )
        junit 'test/coverage/junit-coverage-results.xml'
      }
    }

但是得到错误:

WorkflowScript: 18: Invalid step "parallel" used - not allowed in this context - The parallel step can only be used as the only top-level step in a stages step block

在进入下一阶段之前,我有办法做到这一点吗?

您应该在并行分支中使用 steps

在 groovy 中,这应该有效:

stage ("test"){
    parallel(
        "Mocha": {
            node{
                sh 'gulp mocha-tests'
            }
        },
        "Jasmin": {
            node{
                sh 'gulp karma-tests-ci'
            }
        }
    )
    node{
        junit 'test/coverage/junit-coverage-results.xml'
    }
}

在撰写本文时,如果您在声明性管道的 steps 块中使用 parallel,则不能使用任何其他步骤。

但是,您可以将 post section 添加到您的阶段,以便在成功执行测试后 junit 步骤始终是 运行。例如:

stage('Unit Tests') {
  steps {
    parallel
      'Jasmine': {
        sh 'gulp karma-tests-ci'
      },
      'Mocha': {
        sh 'gulp mocha-tests'
      }
  }
  post {
    success {
      junit 'test/coverage/jasmine-results.xml'
      junit 'test/coverage/mocha-results.xml'
    }
  }
}