我试图创建一个Jenkins管道,在第一阶段中,我会在sh shell脚本中定义一个变量。 然后,我想根据先前定义的变量使用“何时”条件运行下一阶段。
pipeline {
agent { label 'php71' }
stages {
stage('Prepare CI...') {
steps{
sh '''
# Get the comment that was made on the PR
COMMENT=`echo $payload | jq .comment.body | tr -d '"'`
if [ "$COMMENT" = ":repeat: Jenkins" ]; then
BUILD="build"
fi
'''
}
}
stage('Build Pre Envrionment') {
agent { label 'php71' }
when {
expression { return $BUILD == "build" }
}
steps('Build') {
sh '''
echo $BUILD
echo $COMMENT
'''
}
}
}
}
这给了我一个错误: groovy.lang.MissingPropertyException:没有此类属性:类别:groovy.lang.Binding
的$ BUILD我该怎么办?可能吗? 谢谢!
答案 0 :(得分:1)
可能使用Jenkins脚本化管道,该管道比声明式更为灵活。 在sh脚本中打印该值,并使用returnStdout使它可用于管道脚本。有关更多详细信息,请参见How to do I get the output of a shell command executed using into a variable from Jenkinsfile (groovy)?。