Jenkins でプロジェクトをリリースしようとしていますが、ホストが見つからない例外が発生します。
Caused by: java.lang.RuntimeException: java.net.UnknownHostException: XXXXXXXXXXXXXXX: nodename nor servname provided, or not known
at org.apache.maven.scm.provider.perforce.PerforceScmProvider.generateDefaultClientspecName(PerforceScmProvider.java:420)
at org.apache.maven.scm.provider.perforce.PerforceScmProvider.getClientspecName(PerforceScmProvider.java:395)
at org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand.executeCheckOutCommand(PerforceCheckOutCommand.java:75)
at org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(AbstractCheckOutCommand.java:82)
at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
ソースを読んでみると、次の行で例外がスローされているようです:
InetAddress.getLocalHost().getHostName();
コードを変更する以外にリリース プラグインのソースを制御できないため、この問題を回避する方法はありますか? 「InetAddress.getLocalHost().getHostName()」からの特定の応答を強制するように、etc ホストを何らかの方法で設定できますか?
答え1
XXXXXXXXXXXXXXX は、実際の非ローカルホスト (またはローカルホストのバリアント/エイリアス) ホスト名をマスクしていると想定しています。
これは、ローカルの名前解決の設定に従って、マシンに正引きと逆引きの両方ができないホスト名/IP アドレスがある場合に発生する可能性があります。 InetAddress.getLocalHost()
ローカル ホストを解決するために逆引きを実行することが知られています。
コマンドを実行しhostname
、実際の IP アドレスと 内の名前が一致するエントリがあることを確認します/etc/hosts
。 は FQDN ホスト名またはエイリアス/短縮ホスト名のいずれかを返し、これらを前方/逆引き検索できない可能性がありますhostname
。
もう 1 つの問題は、IPv6 と IPv4 の違いです。
Jenkins JVM はホスト名の検索をキャッシュするので、 へのテスト呼び出しを行うための小さなテスト プログラムを用意しておくと便利ですInetAddress.getLocalHost()
。そうしないと、テストする構成変更ごとに Jenkins を再起動する必要があります。
この回答を改善できるよう、フィードバックや追加の詳細を提供してください。