2016-04-01 10 views
1

を照会するとき、私は少し私はジェンキンスScriptlerスクリプトコンソールで次のスクリプトを実行したときにそれが動作する理由に引っかかって、まだダイナミックに使用したときにしていますChoiceのパラメータ(Scriptler)、それはエラーで失敗します。ジェンキンス[動的選択肢パラメータ(Scriptler)]失敗資格証明書情報

Error: groovy.lang.MissingPropertyException: No such property: com for class: Script1 

私はそれが使用されるクラスcom.cloudbees.plugins.credentials.CredentialsProviderが呼び出されると行うことであると仮定することができます。

/*** BEGIN META { 
"name" : "GetRemoteNasFolderList", 
"comment" : "Retrieve a list of folder names (in reverse order) from a remote NAS location.", 
"parameters" : [ 'ENVIRONMENT', 'SHARE_PATH', 'FOLDER_PATH' ], 
"core": "1.565", 
"authors" : [{ 
    name : "Authors Name" 
}] 
} END META**/ 

import jenkins.model.Jenkins 

try { 
    // params 
    def env = ENVIRONMENT // 'DEV" or 'TEST' or 'PROD' 
    def share_path = SHARE_PATH 
    def folder_path = FOLDER_PATH 

    String user_domain = '' 
    String nas_path = '' 

    switch (env) { 
    case 'DEV': 
     user_domain = 'dev'; 
     nas_path = 'nas_host.dev.company.com.au'; 
     break; 
    case 'TEST': 
     user_domain = 'test'; 
     nas_path = 'nas_host.test.company.com.au'; 
     break; 
    case 'PROD': 
    default: 
     user_domain = 'prod'; 
     nas_path = 'nas_host.prod.company.com.au'; 
    } 

    String user_name = 'myUserName' 
    def full_name = user_domain + '\\' + user_name 
    String pass_word = '' 
    def found = false 

    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
     com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, 
     Jenkins.instance, 
     null, 
     null 
    ); 

    for (c in creds) { 
    if (c.username == full_name) { 
     pass_word = c.password 
     found = true 
    } 
    } 

    if (found == true) { 
    url = "smb://" + nas_path + "/" + share_path + "/" + folder_path; 

    println("Url: "+url) 
    // println(user_domain+"\\"+user_name+", "+pass_word) 

    auth = new jcifs.smb.NtlmPasswordAuthentication(user_domain, user_name, pass_word); 
    dir = new jcifs.smb.SmbFile(url, auth); 

    folders = [] 

    for (jcifs.smb.SmbFile f : dir.listFiles()) 
    { 
     folders.push(f.getName().replace('/','')) 
    } 

    return folders.sort().reverse() 
    } else { 
    print("Credential entry not found for (" + full_name + ")") 
    } 

} catch (e) { 
    return ["Error: "+e] 
} finally { 
} 

任意の考え、誰:ここ

スクリプトです。

答えて

0

Error: groovy.lang.MissingPropertyException: No such property: xx for class: yy

一般的なエラーメッセージあなたはimport参照が不足している場合は、あなたはすべてを参照して試してみましたか?

import jenkins.model.* 
import com.cloudbees.plugins.credentials.* 
import com.cloudbees.plugins.credentials.common.* 
import com.cloudbees.plugins.credentials.domains.*; 

おそらくこれは、動的選択肢パラメータ(Scriptler)がない場所としてジェンキンスScriptlerとスクリプトコンソールは、デフォルトでは何をすべきかです。

参考:https://github.com/chef-cookbooks/jenkins/issues/174

+0

はいあります。この投稿に先立ち、再び正気のために。同じエラーメッセージ。 – AHendley

+0

Scriptlerスクリプトを使用して動作している別のプラグイン(Active Choices Parameter)を試したことがあります。 私はこれを前に試していませんでしたが、わかりませんが、今は動的パラメータが原因ではなく、根本的な原因は何かをバグしています。私はおそらくちょうど上に移動し、何が動作する必要がありますが、それは、プラグインのバグです。 – AHendley

0

はScriptlerスクリプトを使用すると、今取り組んでいるさまざまなプラグイン(アクティブ選択肢パラメータ)を使用してに切り替えました。

関連する問題