私はジェンキンスパイプラインを構築しており、リモートでそのジョブをトリガーすることができます。私はどのIPが仕事を引き起こしたのかを知る必要があります。だから私は、リモートIPを返す少し面白いスクリプトを持っています。 EnvInject-pluginでは普通のフリースタイルジョブでこの変数を簡単に使うことができますが、これをパイプラインでどうやって使うことができますか?私は、パイプライン・プラグインでEnvInject-プラグインを使用することはできません:(groovyスクリプトを使用したjenkinsパイプラインでの変数の入力
ここでIPを取得するための小さなスクリプトです:
import hudson.model.*
import static hudson.model.Cause.RemoteCause
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]
たぶん、より良い名前は '引き金となり、なります。 originIPAddress'を使用すると、背後にあるものがもう少し明確になります。 – Bluehorn
あなたのanwserに感謝します!私はヴァースフォルダを持っていなかったので、私はそれを作成しました。再起動後、私は次のようになります:java.lang.NoSuchMethodError:そのようなDSLメソッド 'ipTrigger'はステップの間に見つかりませんでしたので、彼はメソッドを見つけられませんでしたか?ファイルの名前はipTrigger.groovyで、パイプラインスクリプトの呼び出しはあなたと同じです(ファイルの名前と呼び出しが一致しないことがありますか)。間違っていませんか? – user3296316
申し訳ありませんが、私の間違い。ディレクトリ構造は '$ JENKINS_HOME/workflow-libs/vars/ipTrigger.groovy'でなければなりません。私の例では省略した 'workflow-libs'ディレクトリに注意してください。更新された回答も – Rik