Jenkins 并行使用try/catch时管道失败

Jenkins 并行使用try/catch时管道失败,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我对管道非常陌生,一直在阅读一些官方教程。我一直在想如何在并行运行的节点中使用try/catch。我在跟踪调查。下面是一些代码: stage('Test') { parallel linux: { node('linux') { checkout scm try { unstash 'app' sh 'make check' }

我对管道非常陌生,一直在阅读一些官方教程。我一直在想如何在并行运行的节点中使用
try/catch
。我在跟踪调查。下面是一些代码:

stage('Test') {
    parallel linux: {
        node('linux') {
            checkout scm
            try {
                unstash 'app'
                sh 'make check'
            }
            finally {
                junit '**/target/*.xml'
            }
        }
    }
}
运行几乎相同的代码,只更改了节点标签。但是,我收到了以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 23: Expected a step @ line 23, column 29.
                           try {
                           ^

有人知道这里怎么了吗

我猜您运行的是Pipeline plugin版本,该语法已被弃用(是的,即使您从官方文档中获取示例,这种情况也会发生…) 我建议你这样做:

 stage('Test') {
    steps {
        parallel (
           node('linux') {
            "firstTask" : {
                // Do your try/catch etc.
            }
           },
           node('linux') { //or some other slave name
            "secondTask" : {
                // Do some other thing in parallel
            }
           }
        )
    }
}
如果这不起作用,请尝试使用这些步骤,因为错误的原因与这些步骤有关:

stage('Test') {
    parallel linux: {
        node('linux') {
            steps {
            checkout scm
            try {
                unstash 'app'
                sh 'make check'
            }
            finally {
                junit '**/target/*.xml'
            }
          }
        }
    }
}
或:


尝试将“脚本”替换为“步骤”,在我这方面效果很好

stage('Test') {
parallel linux: {
    node('linux') {
        script {
            checkout scm
            try {
                unstash 'app'
                sh 'make check'
            }
            finally {
                junit '**/target/*.xml'
            }
      }
    }
}

}

不幸的是,这似乎不起作用。我收到了同样的错误。是的,这是正确的方法。几个月前我发现了,但忘了发了。:)
stage('Test') {
parallel linux: {
    node('linux') {
        script {
            checkout scm
            try {
                unstash 'app'
                sh 'make check'
            }
            finally {
                junit '**/target/*.xml'
            }
      }
    }
}