groovy.lang.MissingPropertyException:没有此类属性:CHANGE_author

时间:2018-07-06 10:36:25

标签: jenkins jenkins-pipeline

我遇到以下错误,我的脚本如下所示

pipeline {
    agent any

    stages {
         stage('Build') {
            steps {
                echo 'I am building '+scm.branches[0].name+' branch.'
                sh "echo Shell ${CHANGE_author}"
                echo "echo Shell ${CHANGE_author}"
            }
        }
    }
}

以下是错误跟踪

groovy.lang.MissingPropertyException: No such property: CHANGE_author for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
    at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)

根据文档专家的链接 https://jenkins.io/doc/book/pipeline/syntax/

changeRequest ” 如果当前构建是针对“变更请求”的,则执行阶段(也称为GitHub和Bitbucket上的Pull Request,GitLab上的Merge Request或Gerrit变更)。如果未传递任何参数,则该阶段将在每个更改请求上运行,例如:当{changeRequest()}时。 通过将带参数的filter属性添加到变更请求中,可以使此阶段仅在匹配的变更请求上运行。可能的属性是id,target,branch,fork,url,title,author,authorDisplayName和authorEmail。每个变量都对应一个CHANGE _ 环境变量,例如:when {changeRequest target:'master'}。“ *

所以我可以以CHANGE_ *的形式访问环境变量,但是它不起作用

1 个答案:

答案 0 :(得分:1)

如果您在Jenkins服务器中将环境变量定义为CHANGE_author,请尝试使用env.CHANGE_author进行访问。例如:

    stage('Example1') {
       steps {
           script{
                env.int_param1 = '2'
           }
       }
    }
    stage('Example2') {
         steps {
             echo "${env.int_param1}"
         }
    }