我正在为我的项目运行 Multibranch 管道。
Jenkinsfile 的行为应该根据触发器而改变。触发管道的事件有两个 1. Push 事件 2. Pull Request。
我正在尝试检查环境变量“CHANGE_ID”(“CHANGE_ID”仅可用于拉取请求)。参考。
因此,如果管道由推送事件触发,并且如果检查“CHANGE_ID”变量,则会引发异常(如果管道被拉取请求触发,代码工作正常)。
代码:
stage('groovyTest'){
node('mynode1') {
if (CHANGE_ID!=NULL){
echo "This is Pull request"
}else{
echo "This is Push request"
}
}
}
错误:
groovy.lang.MissingPropertyException: No such property: CHANGE_ID for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:5)
at ___cps.transform___(Native Method)
如何检查 Jenkinsfile 中是否存在“CHANGE_ID”变量?