SonarQubeで管理しているprojectのQualityGateの状態をAPIで取得する方法

SonarQubeで管理しているprojectのQualityGateの状態をAPIで取得する方法

SonarQubeのQualityGateの状態をAPIを使って取得します。

API確認

構築したSonarQube上で利用できるAPIが確認できます。

http://localhost:9000/web_api

今回はQualityGateの状態を確認したいので、以下のAPIを利用します。

curlでの実行

SonarQubeとprojectの連携方法(React + TypeScript)で作成したprojectに対してAPIを投げてみます。


Responseは下のように返却されます。

1
 

statusが「OK」となっていればQualityGateがsuccessしていることになります。
QualityGateがfailedの場合は「ERROR」と返却されます。

point: SonarQubeの最新のバージョンではbasic認証が必要です。

QualityGateの状態をチェックするshellを作る

APIを利用できたので、shにまとめます。
このshellをCICDのアプリケーションで利用すれば静的解析をCICDに組み込むことができます。
※QualityGateのチェックを行うようなプラグインもあります。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/sh
 
cd `dirname $0`
 
SONAR_PROJECT_KEY="com.example.yourproject:react-template"
USER="admin"
PASSWORD="password"
 
response=`curl --noproxy localhost -u ${USER}:${PASSWORD} -X GET http://localhost:9000/api/qualitygates/project_status?projectKey=${SONAR_PROJECT_KEY} 2> /dev/null`
 
# return ERROR or OK
result_status=`echo $response | tr ',' '\n' | grep -e "status" | sed 's/^.*://' | tr -d '"'`
 
result_list=(${result_status// /})
for result in "${result_list[@]}"
do
    if [ "${result}" = "ERROR" ]
    then
        echo "QualityGate is failed"
        exit "1"
    fi
done
 
echo "QualityGate is Success"
exit "0"

関連

DockerでSonarQube環境を手早く構築する

SonarQubeとprojectの連携方法(Spring Boot,gradle)

SonarQubeとprojectの連携方法(React + TypeScript)

参考

How do I pass credentials to Sonar API calls?

SonarQubeカテゴリの最新記事