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

时间:2017-03-13 12:27:11

标签: jenkins jenkins-pipeline

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

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

在进入下一阶段之前,有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:4)

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

但是,您可以在舞台上添加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'
    }
  }
}

答案 1 :(得分:1)

您应该使用并行分支内的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'
    }
}