在我的multibranch管道作业中,我可以成功访问这样的环境变量:
echo "$env.BRANCH_NAME"
但如果我尝试与同一环境变量进行比较,它会引发异常:
if($env.BRANCH_NAME == 'master')
{
echo "This is the master branch"
}
这是我给出的错误堆栈的顶部:
groovy.lang.MissingPropertyException: No such property: $env 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 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:4)
我需要在这里做一些脚本批准吗?我查看了Manage Jenkins - >进程内脚本批准,但没有任何内容。
答案 0 :(得分:6)
尝试删除美元符号或使用" $ {env.BRANCH_NAME}"
答案 1 :(得分:3)
前面的答案是正确的,但是对于更多信息,“$ var”语法是字符串中用于将变量值插入字符串的内容。在字符串之外,只需引用变量。
答案 2 :(得分:0)
使用 $ 来插入变量,任何一个选项都可以使用:
if(env.BRANCH_NAME == 'master')
{
echo "This is the master branch"
}
或
if("$env.BRANCH_NAME" == 'master')
{
echo "This is the master branch"
}