![](/img/trans.png)
[英]groovy.lang.MissingPropertyException: No such property: manager for class: Script1
[英]Jenkins groovy.lang.MissingPropertyException: No such property: for class: Script1
該程序的目的是替換所有 TFS 用戶的密碼。 如果我直接在代碼中使用用戶名和密碼,它就可以工作,但是當我將它轉換為參數化構建時會出現此錯誤。
Started by user Jirong Hu
[EnvInject] - Loading node environment variables.
Building remotely on public_jenprodslave_1 in workspace D:\public_jenprodslave_1\workspace\DevOps\Update-TFSPlugin-Password
param userid value : devops_test_user
ERROR: Build step failed with exception
groovy.lang.MissingPropertyException: No such property: userid_param_value for class: Script1
import hudson.model.*
import hudson.triggers.*
import hudson.util.Secret;
import hudson.plugins.tfs.TeamFoundationServerScm
def thr = Thread.currentThread()
def build = thr?.executable
def resolver = build.buildVariableResolver
def userid_param = "userid"
def userid_param_value = resolver.resolve(userid_param)
println "param ${userid_param} value : ${userid_param_value}"
def password_param = "password"
def password_param_value = resolver.resolve(password_param)
//println "param ${password_param} value : ${password_param_value}"
updateTFSPluginPassword(Hudson.instance.items)
def updateTFSPluginPassword(items) {
for(item in items) {
if (item.class.canonicalName != 'com.cloudbees.hudson.plugins.folder.Folder') {
if (item.scm instanceof TeamFoundationServerScm) {
// Update the TFS user id here:
//if (item.scm.getUserName() == 'devops_test_user') {
if (item.scm.getUserName() == userid_param_value) {
println("Working on project <$item.name>")
println item.scm.getType()
println item.scm.getServerUrl()
println item.scm.getProjectPath()
println item.scm.getWorkspaceName()
println item.scm.isUseUpdate()
println item.scm.getUserName()
println item.scm.getPassword()
// Update the TFS user password hash here:
Secret secret = Secret.fromString(password_param_value)
tfsSCM = new TeamFoundationServerScm(item.scm.getServerUrl(),
item.scm.getProjectPath(),
null,
item.scm.isUseUpdate(),
item.scm.getWorkspaceName(),
item.scm.getUserName(),
secret)
item.scm = tfsSCM
println ("")
}
}
} else {
updateTFSPluginPassword(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems())
}
}
}
引發groovy.lang.MissingPropertyException
的原因之一是當您嘗試訪問其范圍之外的變量或您尚未定義該變量時。
您需要在訪問參數之前檢查參數是否已定義:
if ( System.getenv('VARIABLE') ) {
println "VARIABLE parameter exists, and its value is: " + VARIABLE
}
這些方法也可能適用於 groovy 腳本:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.