2016-05-16 9 views
1

このプログラムの目的は、すべてのTFSユーザーのパスワードを置き換えることです。コード内でユーザーIDとパスワードを直接使用すると機能しますが、パラメータ化されたビルドに変換するとこのエラーで失敗します。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

すべての変数にフィールド注釈を追加した後に機能します。ご協力いただきありがとうございます! –

1

理由の1つgroovy.lang.MissingPropertyException:は、スコープ外の変数にアクセスしようとしているとき、またはその変数を定義していないときにスローされます。

関連する問題