web-dev-qa-db-ja.com

ジェンキンス+ソナー+ github統合

問題:私はセットアップしていますジェンキンス+ソナー+ github統合ソナーを介したpullrequest静的コードチェック。

私の設定:

  1. GithubでSonarをインストールしました

  2. インストールされたジェンキンス

  3. ジェンキンスのビルド後のアクションには、次のプロパティがあります

-Dsonar.github.login=bhuwang   
-Dsonar.github.repository=company/repo  
-Dsonar.verbose=true 
-Dsonar.analysis.mode=preview 
-Dsonar.issuesReport.console.enable=true 
-Dsonar.forceUpdate=true 
-Dsonar.github.login=gitusername 
-Dsonar.github.oauth=token
  1. トークンは私のgithubアカウントから生成されました。

これで link sonarqubeの実行中に次のプロパティを提供する必要があることを読みました。 enter image description here

Sonar.github.pullRequestプロパティを除くすべてを追加しました。 このプロパティ値を動的に取得する方法がわかりません。上記のような4つのプロパティが適切に動作する必要があります。

編集:プロパティを追加する方法を見つけました-Dsonar.github.pullRequest = pullrequestNo

そして、良い知らせは、ハードコードされたプルリクエストnoで、今は完全に問題なく動作していることです。しかし、プルリクエストを取得する動的な方法が必要です。

プルリクエストを取得する方法を誰も知っていますか?動的にjenkins.?

プルリクエストビルダーが機能することはわかっていますが、最後には運がありません。ソナープロパティ内でプルリクエストビルダー環境変数を使用できません。

https://issues.jenkins-ci.org/browse/JENKINS-2459

21
Bhuwan Gautam

最後に、この問題を解決することができます。詳細は次のとおりです。

  1. SonarをGitHubプラグインでインストールします。
  2. 次のプラグインでJenkinsをインストールします

    • GitHub Pull Request Builder
    • SonarQubeプラグイン
    • GITプラグイン
    • GitHubプラグイン

次のリンクに従って、プルリクエストビルダープラグインをセットアップします。 https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

    1. グローバルJenkinsシステムのセットアップ:
  • Goto Manage Jenkins->システムの構成
  • Jdkの構成 enter image description here
  • SonarQube Runnerをインストールします enter image description here
  • Sonarの構成 enter image description here
  • Git WebHookセットアップ enter image description here
  • PullRequest Builderのセットアップ enter image description here

    1. フリースタイルジェンキンスジョブの作成 enter image description here
  • gitHubプロジェクトセクションにgithub urlを追加します enter image description here

  • ソースコード管理セクションのセットアップ enter image description here

  • ビルドトリガーのセットアップ enter image description here

  • ビルド後のアクション用のSonarのセットアップ enter image description here

  • 追加のプロパティセクションで、次のソナープロパティを提供します

-Dsonar.sourceEncoding=UTF-8 
-Dsonar.analysis.mode=preview 
-Dsonar.github.repository=company/repo
-Dsonar.github.login=gitusername 
-Dsonar.github.oauth=oauthtoken
-Dsonar.Host.url=sonarhostedurl
-Dsonar.login=admin 
-Dsonar.password=pass
-Dsonar.github.pullRequest=${ghprbPullId}
${ghprbPullId}: this will be provided via github pullrequest builder plugin

注:ジョブはpullrequest builderプラグインを介してトリガーされる必要があります。そうでない場合、$ {ghprbPullId}は空白を返します。手動でジョブを実行する場合、この$ {ghprbPullId}プロパティをビルドパラメーターとして渡す必要があるため、これは機能しません。利用可能な環境パラメータを確認したい場合は、これに従ってください Jenkins Shellスクリプトの実行に使用するGit環境変数

これがお役に立てば幸いです。

28
Bhuwan Gautam

コメントが長すぎるので、ここに書きます。

ウェブ上でいくつかの調査を行った後、同様のシステムをセットアップしようとしているプロセスの数歩先の誰かからSOに関する質問が見つかりました here 。彼らはこれをすべてMavenで動作させようとしているのですが、あなたもそうなのかどうかはわかりませんが、いずれにしても、彼らがスクリプトを支援するために使用しているリンクを確認できます。

https://github.com/SonarSource/sonarqube/blob/master/travis.sh

これは、プル番号を動的に取得するスクリプトを記述する必要があることを示しています。同様の方法で番号を取得するスクリプトを作成する必要があると思います。githubconfファイルの1つは、独自の追跡目的で現在のプルリクエスト番号を追跡していると思います。

あなたが望んでいたかもしれないほど本当の答えではありませんが、うまくいけばそこに到達するのに役立つ新しい情報です。

3
Seb