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"
関連
SonarQubeとprojectの連携方法(Spring Boot,gradle)
SonarQubeとprojectの連携方法(React + TypeScript)
コメントを書く