【问题标题】:groovy.lang.MissingPropertyException: No such property: jenkins for class: groovy.lang.Bindinggroovy.lang.MissingPropertyException:没有这样的属性:jenkins for class:groovy.lang.Binding
【发布时间】:2017-11-01 21:41:43
【问题描述】:

我们正在升级到更新版本的 Jenkins (2.60.1),并且在以前的 Jenkins 版本 (1.596/2) 中运行的 groovy 脚本不再工作。

这是一个 Jenkins 构建项目,它是参数化的,我们使用 Groovy 脚本为 Choice Provider 提供选择(Choice Provider 设置为 System Groovy Choice Parameter)。

我们正在尝试访问 Jenkins 环境变量并这样做(这是 Groovy 脚本的一部分):

import hudson.slaves.EnvironmentVariablesNodeProperty
import hudson.EnvVars

EnvironmentVariablesNodeProperty prop = jenkins.getGlobalNodeProperties().get(EnvironmentVariablesNodeProperty.class)
EnvVars env = prop.getEnvVars()

def MY_VAR = env['MY_JENKINS_VAR']

但是,我在运行脚本时遇到以下错误:

Failed to execute script

groovy.lang.MissingPropertyException: No such property: jenkins 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)

在我看来,“jenkins”引用应该是 Jenkins 或可能是 Groovy 提供的内置属性,但我找不到任何关于我需要做什么才能从 Groovy 脚本访问它的信息.

感谢您的帮助。

【问题讨论】:

    标签: jenkins groovy


    【解决方案1】:

    正如@Jayan 在另一篇文章中指出的那样,解决方案是执行以下操作

    import jenkins.model.*
    jenkins = Jenkins.instance
    

    然后我就可以按照原来的方式编写其余的脚本了。

    【讨论】:

      【解决方案2】:

      请仔细检查 jenkins 是否阻止了此导入。转到脚本批准并检查它是否阻止它。如果是点击允许。

      https://jenkins.io/doc/book/managing/script-approval/

      【讨论】:

      • 我会在我回到办公室时检查一下,但是当我今天下午查看时,脚本批准中没有关于 Groovy 插件的任何内容。 “jenkins”对象是 Groovy 插件提供的,还是其他插件提供的?
      • 我刚刚检查了 Jenkins 构建,在执行 Groovy 脚本并收到错误(如上所述)后,我导航到构建的 In-process Script Approval 页面,它没有显示任何内容需要批准(这适用于我正在尝试的内容)。我应该如何在我的 Groovy 脚本中获取 Jenkins 构建环境变量?
      • @MarkHansen 尝试切换“Groovy Sandbox”以获取不同的错误消息。我相信这也会在脚本批准部分生成使用脚本的请求。我对此不是 100% 确定的,我只知道我在检查和不检查沙箱的情况下都进行了尝试,最终它们出现在批准部分。确保您要进入全局安全设置以访问它。
      【解决方案3】:

      对我来说,出现这个问题是因为我的 Groovy 脚本中有一些无效字符。在我们的例子中,这是脚本右括号之后的一个额外的空白行。

      【讨论】:

        【解决方案4】:

        对于 Jenkinsfile 库,我在脚本名称中使用了 -(连字符)。 将-(连字符)替换为_(下划线)后得到解决

        【讨论】:

          猜你喜欢
          • 2020-02-01
          • 2018-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-30
          • 1970-01-01
          相关资源
          最近更新 更多