1

Jenkins ジョブの 1 つで Sonar レポートを生成するために、maven の sonar:sonar ゴールを使用しています。

Jenkins のホスト名は jenhost.tst.com で、Sonar のホストは sonhost.tst.com で、Sonar の jdbc の URL は jdbc:mysql://sonhost.tst.com:3306/sonar です。このデータベースにはユーザー名があります。適切な権限で作成されたソナー。

Maven ゴールの実行中に、次のエラーが表示されます。

データベースへの接続を開くことができません: ユーザー 'sonar'@jenhost.tst.xxxx.com' のアクセスが拒否されました (パスワードを使用: はい)

上記のエラーの奇妙な点は、ソナー ユーザーが、ソナー ホストではなくデータベース名として Jenkins ホストにアクセスしようとしていることです。

Maven settings.xml を確認したところ、Sonar のデータベース URL が正しく記載されており、Jenkins でも正しく記載されています。

これに関して手がかりはありますか?

4

2 に答える 2

6

Sonar プラグインが localhost に接続している場合、それはデフォルト設定を使用していることを示しています。

Maven を使用して Sonar を構成するには、いくつかの方法があります。

ジェンキンスプラグイン

jenkinsのsonar プラグインは、Sonar を有効にする最も簡単な方法です。ソナーのプロパティを一元管理

Maven 設定

次のプロファイルを Maven 設定ファイル ($HOME/.m2/settings.xml) に追加します。

<settings>
    ..
    <profiles>
        <profile>
            <id>sonar</dev>
            <activeByDefault>true</activeByDefault>
            <properties>
                <sonar.host.url>XXXXX</onar.host.url>
                <sonar.jdbc.url>YYYYY</sonar.jdbc.url>
                ..
                ..
            </properties>
        </profile>
        ..
    </profiles>
    ..
</settings>

複数の Jenkins プロジェクトで Maven 設定ファイルを管理する簡単な方法については、次の回答をお読みください。

Maven プロパティ

次のように、POM 内で Sonar プロパティを設定できます。

<properties>
    <sonar.host.url>XXXXX</onar.host.url>
    <sonar.jdbc.url>YYYYY</sonar.jdbc.url>
    ..
    ..
</properties>

または、プロパティ プラグインを使用して sonar.properties ファイルをビルドにインポートします。

最初の 2 つのアプローチのいずれかを優先します。このオプションでは、プロジェクト内のファイルを変更する必要があります。パスワードなどの項目は、リビジョン管理にコミットするべきではありません。

于 2013-07-24T07:13:29.610 に答える
0

ここで同様の問題を見ると、

...
[DEBUG] メモリ リークを防ぐため、JDBC ドライバー [com.mysql.jdbc.Driver] は強制的に登録解除されました
[デバッグ] 一時ディレクトリを削除する
...

以降

[エラー] プロジェクト commons-mdh で目標 org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) を実行できませんでした: Sonar を実行できません: データベースに接続できません: PoolableConnectionFactory を作成できません (通信リンク失敗
[エラー]
[エラー] サーバーに正常に送信された最後のパケットは 0 ミリ秒前です。ドライバーはサーバーからパケットを受信して​​いません。): 接続が拒否されました。

telnetでmysqlに接続すると、mysqlが接続を拒否していることがわかります。

telnet: リモート ホストに接続できません: 接続が拒否されました

したがって、jenkins から sonar と mysql の両方に接続できることを確認してください。

于 2013-08-09T08:57:53.270 に答える