Circle CIで出力したカバレッジレポートをDiscordに通知する

CI

Webhookの追加

まずは通知するチャンネルとWebhook URLが必要なので作成する。 チャンネルの作成については割愛。

作成したチャンネルの歯車アイコンから設定画面を開いてサイドバーの「Webhooks」をクリックするとWebhookの管理画面が開く。 「Create Webhook」ボタンをクリックして名前やアイコンなどを設定して保存すれば完了。 この時、作成画面に表示されるWebhook URLをクリップボードにコピーしておく。

edit webhook

Circle CIのロゴを設定したい場合はこちらからDLできる。

環境変数の設定

config.ymlにURLを直接書くのを避けるためにプロジェクトの環境変数へWebhook URLを追加する。

トップページから通知したいプロジェクトの歯車アイコンをクリックする。 BUILD SETTINGS > Environment Variablesをクリックして「Add Variable」ボタンから環境変数を追加する。 例としてDISCORD_WEB_HOOK_URLを追加する。

add variable

config.ymlの編集

カバレッジレポートの出力設定は公式ドキュメントに書かれている。

公式ドキュメントの設定を編集して以下のようにする。

config.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/php:7-fpm-browsers-legacy
    steps:
      - checkout
      - run:
          name: Run tests
          command: phpdbg -qrr vendor/bin/phpunit --coverage-html build/coverage-report
      - store_artifacts:
          path:  build/coverage-report
      - run:
          name: Notify to discord
          command: |
            curl -sS -XPOST -H "Content-Type: application/json" \
            -d '{"content": ":newspaper: [Coverage report](https://'"$CIRCLE_BUILD_NUM"'-{ID}-gh.circle-artifacts.com/0/build/coverage-report/index.html)"}' \
            $DISCORD_WEB_HOOK_URL >/dev/null

上記設定の環境変数について補足。

  • $CIRCLE_BUILD_NUM定義済み環境変数。CircleCIでのビルド回数。
  • {ID}はプロジェクトごとに設定される値。Circle CIで生成されたリンクを参照する。

index.htmlについては任意のファイルを選択できるのでお好みで。

完成

実際にCIを動かしてみてDiscordに通知されれば完了。

coverage report

Laravel用をgistに公開したので参考になれば。

参考