我遇到以下错误,我的脚本如下所示
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_ *的形式访问环境变量,但是它不起作用
答案 0 :(得分:1)
如果您在Jenkins服务器中将环境变量定义为CHANGE_author,请尝试使用env.CHANGE_author进行访问。例如:
stage('Example1') {
steps {
script{
env.int_param1 = '2'
}
}
}
stage('Example2') {
steps {
echo "${env.int_param1}"
}
}