「Java Web Start」を介して Jenkins サーバーに接続された Windows スレーブ ノード。ノードのシステム情報に IP アドレスがありません。
持っていたすべてのスレーブ ノードを調べて、Jenkins のスレーブ ノードに対応するマシン (IP アドレス) を見つける必要がありました。
Jenkins自体からスレーブノードのIPアドレスを見つける方法はありますか?
「Java Web Start」を介して Jenkins サーバーに接続された Windows スレーブ ノード。ノードのシステム情報に IP アドレスがありません。
持っていたすべてのスレーブ ノードを調べて、Jenkins のスレーブ ノードに対応するマシン (IP アドレス) を見つける必要がありました。
Jenkins自体からスレーブノードのIPアドレスを見つける方法はありますか?
ノードのスクリプト コンソール ( Jenkins の管理->ノード->ノードの選択->スクリプト コンソール) を介して、groovy スクリプトを実行できます。次のコマンドを実行して、IP アドレスを取得します。
println InetAddress.localHost.canonicalHostName
IP を見つけるための最も効率的でプラットフォームに依存しない方法は、おそらくmasterの「グローバル」スクリプト コンソールの次のグルーヴィーなコードです。
import hudson.model.Computer.ListPossibleNames
def node = jenkins.model.Jenkins.instance.getNode( "myslave" )
println node.computer.getChannel().call(new ListPossibleNames())
コンソールでは、これにより(たとえば)
Result
[192.168.0.17]
1 台のマシンに複数の IP アドレスが存在する可能性があるため、結果は文字列のリストになります。
これはノード固有のコンソールを必要としないため、すべてのノードをカバーするコードの周りにループを簡単に追加できます。
非 Windows Jenkins スレーブでこの同じ質問に答えるには:
IP アドレスを取得します。
println "ifconfig".execute().text
ホスト名を取得します。
println "hostname".execute().text
ノードのLog
リンクに移動します。
http://jenkins.mycompany.com:8080/computer/my_node_name/log
最初の行は次のようになります。
JNLP agent connected from /10.11.12.123
Windows スレーブで IP を取得するには:
スクリプト コンソールに移動します ( Jenkins の管理->ノード->ノードの選択->スクリプト コンソール) 。
println "ipconfig".execute().text
Jenkins ジョブで、それが groovy の場合、または ifonfig sh "/sbin/ifconfig -a | grep inet" をエコーします。