簡體   English   中英

groovy.lang.MissingPropertyException: 沒有這樣的屬性: jenkins for class: groovy.lang.Binding

[英]groovy.lang.MissingPropertyException: No such property: jenkins for class: groovy.lang.Binding

我們正在升級到較新版本的 Jenkins (2.60.1) 並且在以前的 Jenkins 版本 (1.596/2) 中工作的 groovy 腳本不再有效。

這是一個 Jenkins 構建項目,它是參數化的,我們使用 Groovy 腳本為選擇提供程序提供選擇(選擇提供程序設置為系統 Groovy 選擇參數)。

我們試圖訪問 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 腳本訪問它的信息。

謝謝你的幫助。

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

import jenkins.model.*
jenkins = Jenkins.instance

然后我就可以按照原樣完成我剩下的腳本編寫工作。

請仔細檢查 jenkins 是否沒有阻止此導入。 轉到腳本批准並檢查它是否阻止它。 如果是點擊允許。

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

對我來說,發生這個問題是因為我的 Groovy 腳本中有一些無效字符。 在我們的例子中,這是腳本結束括號后的一個額外的空行。

就我而言,在 Jenkinsfile 庫的情況下,我在腳本名稱中使用了- (連字符)。 _ (下划線)替換- (連字符)后得到解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM