检查环境变量时,简单的Jenkins管道失败

时间:2016-12-13 19:20:22

标签: jenkins jenkins-pipeline

在我的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 - >进程内脚本批准,但没有任何内容。

3 个答案:

答案 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"
}