我对管道很新,并且已经阅读了一些官方教程。我一直试图弄清楚如何在try/catch
中运行的节点中使用parallel
。我正在关注official example。这是一些代码:
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 {
^
有人知道这里有什么问题吗?
答案 0 :(得分:2)
尝试将'script'替换为'steps',它在我身边很好用
stage('Test') {
parallel linux: {
node('linux') {
script {
checkout scm
try {
unstash 'app'
sh 'make check'
}
finally {
junit '**/target/*.xml'
}
}
}
}
}
答案 1 :(得分:0)
我想,您正在运行Pipeline插件的版本,不推荐使用此语法(是的,即使您从官方文档中获取示例,也会发生这种情况......) 我建议你这样做:
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') {
checkout scm
try {
steps {
unstash 'app'
sh 'make check'
}
}
finally {
junit '**/target/*.xml'
}
}
}
}