問題:私はセットアップしていますジェンキンス+ソナー+ github統合ソナーを介したpullrequest静的コードチェック。
私の設定:
GithubでSonarをインストールしました
インストールされたジェンキンス
ジェンキンスのビルド後のアクションには、次のプロパティがあります
-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
これで link sonarqubeの実行中に次のプロパティを提供する必要があることを読みました。
Sonar.github.pullRequestプロパティを除くすべてを追加しました。 このプロパティ値を動的に取得する方法がわかりません。上記のような4つのプロパティが適切に動作する必要があります。
編集:プロパティを追加する方法を見つけました-Dsonar.github.pullRequest = pullrequestNo
そして、良い知らせは、ハードコードされたプルリクエストnoで、今は完全に問題なく動作していることです。しかし、プルリクエストを取得する動的な方法が必要です。
プルリクエストを取得する方法を誰も知っていますか?動的にjenkins.?
プルリクエストビルダーが機能することはわかっていますが、最後には運がありません。ソナープロパティ内でプルリクエストビルダー環境変数を使用できません。
最後に、この問題を解決することができます。詳細は次のとおりです。
次のプラグインでJenkinsをインストールします
次のリンクに従って、プルリクエストビルダープラグインをセットアップします。 https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables
追加のプロパティセクションで、次のソナープロパティを提供します
-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環境変数
これがお役に立てば幸いです。
コメントが長すぎるので、ここに書きます。
ウェブ上でいくつかの調査を行った後、同様のシステムをセットアップしようとしているプロセスの数歩先の誰かからSOに関する質問が見つかりました here 。彼らはこれをすべてMavenで動作させようとしているのですが、あなたもそうなのかどうかはわかりませんが、いずれにしても、彼らがスクリプトを支援するために使用しているリンクを確認できます。
https://github.com/SonarSource/sonarqube/blob/master/travis.sh
これは、プル番号を動的に取得するスクリプトを記述する必要があることを示しています。同様の方法で番号を取得するスクリプトを作成する必要があると思います。githubconfファイルの1つは、独自の追跡目的で現在のプルリクエスト番号を追跡していると思います。
あなたが望んでいたかもしれないほど本当の答えではありませんが、うまくいけばそこに到達するのに役立つ新しい情報です。