2017-01-10 21 views
0

EnvInj-pluginを介して変数を挿入する関数を記述しました。スクリプト以下の私が使用:JenkinsパイプラインMissingMethodException:メソッドの署名がありません:

import hudson.model.* 
import static hudson.model.Cause.RemoteCause 

@com.cloudbees.groovy.cps.NonCPS 
def call(currentBuild) { 
    def ipaddress="" 
    for (CauseAction action : currentBuild.getActions(CauseAction.class)) { 

     for (Cause cause : action.getCauses()) { 
      if(cause instanceof RemoteCause){ 
       ipaddress=cause.addr 
       break; 
      } 
     } 
    } 
    return ["ip":ipaddress] 
} 

私はそれをグローバル関数としてフォルダ$ JENKINS_HOME /ワークフロー-libsに/ VARSを入れたとき、私は次のエラーを取得する:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper.getActions() is applicable for argument types: (java.lang.Class) values: [class hudson.model.CauseAction] 

私はcompletly新しいです私はなぜそれが動作していないのかわかりません。 EnvInj-pluginではうまくいきました。誰でも助けてくれますか?

答えて

1

おそらく、currentBuildrawbuildプロパティが必要です。

次のスクリプトはあなたのために行う必要があります。

//$JENKINS_HOME/workflow-libs/vars/getIpAddr.groovy 
@com.cloudbees.groovy.cps.NonCPS 
def call() { 
    def addr = currentBuild.rawBuild.getActions(CauseAction.class) 
     .collect { actions -> 
      actions.causes.find { cause -> 
       cause instanceof hudson.model.Cause.RemoteCause 
      } 
     } 
    ?.first()?.addr 
    [ ip: addr ] 
} 

あなたはそれが好きで使用する場合:あなたが代わりにハッシュマップ[ ip: addr ]だけaddrを返すようにしたいかもしれません何RemoteCauseアクション

が存在しない場合、それはnullなること

def addressInfo = getIpAddr() 
def ip = addressInfo.ip 

注意を、 〜のように

//$JENKINS_HOME/workflow-libs/vars/getIpAddr.groovy 
@com.cloudbees.groovy.cps.NonCPS 
def call() { 
    currentBuild.rawBuild.getActions(CauseAction.class) 
     .collect { actions -> 
      actions.causes.find { cause -> 
       cause instanceof hudson.model.Cause.RemoteCause 
      } 
     } 
    ?.first()?.addr 
} 

その後、

def addressInfo = [ ip: getIpAdder() ] 

ALOSは、あなたのジェンキンスのセキュリティに応じて、あなたはサンドボックススクリプトで拡張メソッドの実行を許可する必要があるかもしれない、ということに注意してください。 >In-process Script Approval

それは

+1

最初のものは私のために正常に動作作品を願って - あなたはあなたがManage Jenkinsを介してこれを承認することにより、この問題を解決することができますRejectedSandboxException

がわかります!ありがとうリック!!!!!最高の男:) – user3296316

関連する問題