前回、SonarQubeをセットアップできたので、Jenkinsと連携させてみることにしました。
連携させることで、ビルド、テスト、リリースと一緒にソースコードに問題がないかチェックする
仕組みが出来上がります。
前提条件
GitHubからCloneするGradleの定義ファイルにSonarQubeのアカウント情報を設定しています。
Gradleの定義ファイルにSonarQubeのアカウント情報を設定していない場合は、Jenkins側で設定する必要があると思います。
Jenkinsの設定
始めに、Jenkins側の設定をします。
JenkinsにSonarQubeの情報を登録
Jenkinsの管理 -> システムの設定
SonarQube servers まで移動する。
Environment variables のチェックボックスにチェックをいれる。
SonarQube installationsに必要事項を入力し、[保存]ボタンを押下します。
Name: SonarQube
Server: http://SonarQubeサーバのURL
SonarQubeの設定
SonarQubeのWebhookの設定をします。
Administration -> Configuration -> Webhooks
[Create]ボタンを押下します。
必要事項を入力し、[Create]ボタンを押下します。
Name: Jenkins
URL: http://JenkinsサーバのURL/sonarqube-webhook/
パイプラインの設定
Jenkinsのパイプラインを設定します。
withSonarQubeEnvのパラメータは、Jenkinsの設定で指定したSonarQubeの名前を指定します。
パイプラインの定義は、以下のとおり。
pipeline { agent any stages { stage('SCM') { steps { git credentialsId: 'xxxx', url: 'https://github.com/xxxx/xxxxx.git' } } stage('build && SonarQube analysis') { steps { withSonarQubeEnv('SonarQube') { sh './gradlew sonarqube' } } } stage("Quality Gate") { steps { timeout(time: 1, unit: 'HOURS') { // Parameter indicates whether to set pipeline to UNSTABLE if Quality Gate fails // true = set pipeline to UNSTABLE, false = don't waitForQualityGate abortPipeline: true } } } } }
実行してみよう
パイプラインを実行した結果です。
SonarQubeマークをクリックすると、SonarQubeにジャンプして詳細を確認することができます。
Quality Gateの結果をちゃんと表示されます。
最後に
JenkinsとSonarQubeを使用しているなら、連携はさせておくべきです。
Quality Gateという品質基準の設定が可能というSonarQubeはなかなか優秀ですね。
次のプロジェクトでは必ず使おうと思います。