2016-05-16 90 views
1

這個程序的目的是取代所有TFS用戶的密碼。如果我直接在代碼中使用用戶標識和密碼,但它在我將其轉換爲參數化構建時失敗並出現此錯誤。Jenkins groovy.lang.MissingPropertyException:沒有這樣的屬性:對於類:Script1

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()) 
     }  
    } 
} 

回答

1

我想你可能需要在所提及的屬性上使用Field註釋。請再看看here

+0

它將Field註釋添加到所有變量後工作。謝謝你的幫助! –

1

原因之一groovy.lang.MissingPropertyException:當您嘗試訪問超出其作用域的變量或您尚未定義該變量時,會引發此錯誤。

相關問題