はじめに
SlackとCircleCIを連携させて、カバレッジレポートをslackから簡単に見えるようにする設定手順をまとめました。
単にCircleCIのArtifacts上にカバレッジレポートをあげるだけでは誰も見てくれないので、誰かがpushするたびに、Slackでカバレッジレポートのリンクが通知されます。
ちなみに、単にGitHubリポジトリの平均的なカバレッジ数だけを見れるようにしたいなら、Codecovとかを使ってバッジを付けるとかでもいいと思います。
前提
既にCircleCIのArtifacts上で下記のようにcoverage.htmlを出せている前提です。
動作確認したCircleCIのバージョンは2.0です。
設定手順
①SlackのWebhook URLを取得する
こちらの記事を参考に取得してください。
基本的には、「設定を追加→対象のチャンネルを選択→Webhook URLを控える→設定を保存」という流れです。
画像とか変えるとかっこいいです。
②CircleCIとSlackを連携する
CircleCIの管理画面で NOTIFICATIONS > Chat Notifications に進み、先ほど取得したWebhook URLを貼り付けてSaveします。
これでGitHubにpushされたら、ビルド結果などが自動で通知されるようになります。(カバレッジレポートはまだ)
③CircleCIの環境変数を追加する
CircleCIの管理画面で BUILD SETTINGS > Environment Variables に進み、以下の環境変数を追加します。
Key: SLACK_NOTICE_HOOK
Value: 先ほど取得したWebhook URL
④config.yamlを編集する
例えばこんな感じで store_artifacts
されているとします。
- store_artifacts:
path: coverage.html
destination: coverage.html
その直後に、POSTリクエストするタスクを追加してください。
- run:
name: coverage report
command: |
curl -s -S -X POST \
-d "{'channel': '#your_channel', 'username': 'coverage-report', 'text': ':circleci: coverage report: <https://$CIRCLE_BUILD_NUM-000000000-gh.circle-artifacts.com/0/coverage.html|open report :earth_asia: >(build $CIRCLE_BUILD_NUM)' }" \
$SLACK_NOTICE_HOOK >/dev/null
- channelは任意のチャンネル名を指定してください。
- usernameは分かればなんでもよいです。
-
:circleci:
はslack側でemoji登録されている必要があります。emojiはなくてもよいですがあるとかっこいいです。 -
$CIRCLE_BUILD_NUM
はCircleCIの定義済み環境変数です。特に設定する必要はありません。 -
000000000
はプロジェクトごとのIDです。カバレッジファイルのリンクを開いてURLを確認してください。 -
https://$CIRCLE_BUILD_NUM-000000000-gh.circle-artifacts.com/0/coverage.html
はカバレッジファイルをどのようなパスで配置しているかによって変わるので適宜修正してくだい。 -
SLACK_NOTICE_HOOK
はさきほどCircleCIの管理画面上で登録した環境変数です。
完成
こんな感じで通知されます。
open report
をクリックするとカバレッジレポートを見れます。
やったね!
さいごに
これ作ったはいいけど結局誰も見てくれなそうだな。。。
必要な時に簡単に見れるようになったってことでよしとするか。