并行步骤完成一个阶段后调用插件

min*_*rse 1 jenkins jenkins-pipeline

我有一个这样的管道阶段

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

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

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

但是得到错误:

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
Run Code Online (Sandbox Code Playgroud)

在进入下一阶段之前,有什么方法可以做到吗?

Chr*_*Orr 5

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

但是,您可以在阶段中添加一个post部分,以便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'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)