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を投げてみます。

curl --verbose --noproxy localhost -u admin:password -X GET 'http://localhost:9000/api/qualitygates/project_status?projectKey=com.example.yourproject:react-template'


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


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

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

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

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

#!/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カテゴリの最新記事