Qiitaの記事をもとに、Azure DevOps(ADO)のPull RequestをSonarQube Server(SQS)で自動解析する流れをまとめます。目的は、PR作成時にSASTを実行し、解析結果をPRへ反映することです。

SonarQubeとAzure DevOpsの接続

連携にはADOのURLとPersonal Access Token(PAT)が必要です。SonarQubeでADOのリポジトリをもとにプロジェクトを作成し、SonarQube側でADO連携を登録します。

SonarQubeとAzure DevOpsの連携設定

Azure DevOpsのPAT設定

ADOリポジトリからSonarQubeプロジェクトを作成

Azure DevOpsの設定

ADOにSonarQubeアプリをインストールし、SonarQubeへのService Connectionを作成します。その接続を使ってPipelineを設定します。記事の例では、PRと master ブランチを対象にし、SonarQubeタスクで解析します。

Azure DevOpsにSonarQubeアプリを追加

SonarQubeアプリの設定

Service Connectionの作成

Service Connectionの設定

Azure DevOps Pipelineの作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
trigger:
- master

pr:
- '*'

pool:
  vmImage: ubuntu-latest

steps:
- checkout: self
  fetchDepth: 0
- task: SonarQubePrepare@8
  inputs:
    SonarQube: 'SonarQubeNgrok'
    scannerMode: 'cli'
    configMode: 'manual'
    cliProjectKey: 'wenhan-Sonar_xxxxx'
    cliSources: '.'
- task: SonarQubeAnalyze@8
  inputs:
    jdkversion: 'JAVA_HOME_21_X64'
- task: SonarQubePublish@8
  inputs:
    pollingTimeoutSec: '300'

SonarQube Pipelineの設定

SonarQube には作成したService Connection名、cliProjectKey にはSQSプロジェクトのキーを指定します。実際の接続名とプロジェクトキーに置き換えてください。

Branch PolicyとPRの確認

ADOのBranch Policyで対象Pipelineを必須チェックとして設定します。サンプルコードを変更してPRを作成し、Pipelineの解析結果がSonarQubeに送信されること、Quality GateとIssueの詳細がPRに表示されることを確認します。

Branch PolicyにPipelineを追加

Branch Policyの設定結果

Pipelineによる解析結果

PRに表示されたQuality GateとIssue

PR上の解析フィードバック

これにより、PRごとの自動解析と結果確認を行えるようになります。