Debian のコンテナーで Jenkins と SonarQube を実行しています。Jenkins イメージは--link sonar:sonar
、sonar が実行中の Sonar コンテナーの名前であるオプションで開始されます。したがって、Jenkins の /ets/hosts には、ドッキングされた Sonar の IP を指すホスト名エントリが含まれています。Sonar-config セクション (Jenkins 内) で、sonar:9000が Sonar サーバーとして入力されます。
ビルドすると、スキャナーは期待どおりに実行されますが、プロジェクト ページの Sonar リンクには内部 Docker アドレス、つまり sonar:9000 が含まれています。このアドレスは、Docker の外では意味がありません。リンクがホスト マシンを指すようにします。ホストのポート 9000 に直接移動すると、 Sonar の分析を見ることができます。
ビルド プロセスで Jenkins が使用する Sonar への URL と、プロジェクト ビルド ページに表示される URL を分離するにはどうすればよいですか?
これは、 Sonarビルド ページのプロジェクト ビルド ページのスクリーンショットです。
Sonarcube リンクは、Sonarqube Serversの下の Manage Jenkins->Configure System で設定された URL を指しています。この例では、url は sonar:9000 であり、Jenkins を実行しているコンテナーで知られているホスト名です。この URL は、コンテナの外では意味がありません。サーバー用に 1 つの内部 URL を入力し、Jenkins ユーザー用に 1 つの外部 URL を入力できる必要があります。