Help us understand the problem. What is going on with this article?

SlackでCircleCIからカバレッジレポート通知を受け取る設定手順

はじめに

SlackとCircleCIを連携させて、カバレッジレポートをslackから簡単に見えるようにする設定手順をまとめました。
単にCircleCIのArtifacts上にカバレッジレポートをあげるだけでは誰も見てくれないので、誰かがpushするたびに、Slackでカバレッジレポートのリンクが通知されます。

ちなみに、単にGitHubリポジトリの平均的なカバレッジ数だけを見れるようにしたいなら、Codecovとかを使ってバッジを付けるとかでもいいと思います。

前提

既にCircleCIのArtifacts上で下記のようにcoverage.htmlを出せている前提です。
スクリーンショット 2019-08-02 14.49.15.png

動作確認したCircleCIのバージョンは2.0です。

設定手順

①SlackのWebhook URLを取得する

こちらの記事を参考に取得してください。
基本的には、「設定を追加→対象のチャンネルを選択→Webhook URLを控える→設定を保存」という流れです。
画像とか変えるとかっこいいです。

②CircleCIとSlackを連携する

スクリーンショット 2019-08-02 15.22.49.png

CircleCIの管理画面で NOTIFICATIONS > Chat Notifications に進み、先ほど取得したWebhook URLを貼り付けてSaveします。

これでGitHubにpushされたら、ビルド結果などが自動で通知されるようになります。(カバレッジレポートはまだ)

③CircleCIの環境変数を追加する

スクリーンショット 2019-08-02 15.56.27.png

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 をクリックするとカバレッジレポートを見れます。
やったね!

スクリーンショット 2019-08-02 15.45.02.png

さいごに

これ作ったはいいけど結局誰も見てくれなそうだな。。。
必要な時に簡単に見れるようになったってことでよしとするか。

参考資料

Circle CI で SimpleCov のカバレッジレポートを出力し、出力結果のリンクをSlackに通知する

gold-kou
NTT米屋➡︎ZOZOテクノロジーズ スクラムマスター兼バックエンドエンジニアです。 GoとかgRPCとかOpenAPIとか。 外部記憶として学んだことを記事として残しています。 私の記事は個人的なものであり、会社を代表するものではございません。
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした