【发布时间】:2018-07-10 12:58:42
【问题描述】:
我收到以下错误,我的脚本如下所示
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/
“更改请求” 如果当前构建是针对“更改请求”(也称为 GitHub 和 Bitbucket 上的拉取请求、GitLab 上的合并请求或 Gerrit 中的更改等),则执行该阶段。当没有传递参数时,阶段会在每个更改请求上运行,例如:when { changeRequest() }。 通过向更改请求添加带有参数的过滤器属性,可以使该阶段仅在匹配的更改请求上运行。可能的属性有 id、target、branch、fork、url、title、author、authorDisplayName 和 authorEmail。每一个都对应一个 CHANGE_ 环境变量,例如:when { changeRequest target: 'master' }。"*
所以我可以以 CHANGE_* 的形式访问环境变量,但它不起作用
【问题讨论】: