带有sh定义变量的Jenkins管道“何时”条件

时间:2018-07-05 09:08:15

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我试图创建一个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

我该怎么办?可能吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

可能使用Jenkins脚本化管道,该管道比声明式更为灵活。 在sh脚本中打印该值,并使用returnStdout使它可用于管道脚本。有关更多详细信息,请参见How to do I get the output of a shell command executed using into a variable from Jenkinsfile (groovy)?