![](/img/trans.png)
[英]Jenkins Android groovy.lang.MissingPropertyException: No such property: HOME 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 是否沒有阻止此導入。 轉到腳本批准並檢查它是否阻止它。 如果是點擊允許。
對我來說,發生這個問題是因為我的 Groovy 腳本中有一些無效字符。 在我們的例子中,這是腳本結束括號后的一個額外的空行。
就我而言,在 Jenkinsfile 庫的情況下,我在腳本名稱中使用了-
(連字符)。 用_
(下划線)替換-
(連字符)后得到解決
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.