Circle CI で SimpleCov のカバレッジレポートを出力し、出力結果のリンクをSlackに通知します。
Circle CI から Slack への通知は Slack の CircleCI Integration 機能で設定できますが、
この場合はビルドの通知が行われるだけで Artifact の情報を通知することができません。
そこで、 Slack の Incoming WebHook に Artifact の URL を通知する設定をしてみます。
設定手順
- Slack で Incoming WebHook のURLを取得する
- Circle CIの管理画面で、Slackで取得したWeb HookのURLを任意の名前の環境変数に設定する
- 今回は仮に
$SLACK_TEST_HOOK
で設定した
- 今回は仮に
- circle.yml を設定する
machine: timezone: Asia/Tokyo ruby: version: 2.3.1 test: pre: - bundle exec rspec post: - | curl -s -S -X POST --data-urlencode "payload={'channel': '#your_channel', 'username': 'test-webhook', 'text': ':circleci: coverage report: <https://$CIRCLE_BUILD_NUM-00000000-gh.circle-artifacts.com/0$CIRCLE_ARTIFACTS/coverage/index.html|open report :earth_asia: >(build $CIRCLE_BUILD_NUM)' }" $SLACK_TEST_HOOK >/dev/null
00000000
の部分にはプロジェクトごとの任意のIDが入ります。
一度、手動で artifact のURLを確認すると値がわかります。
環境変数について
ENV | 設定者 | 内容 |
---|---|---|
$CIRCLE_BUILD_NUM | Circle CI | Circle CIのBuild Number |
$CIRCLE_ARTIFACTS | Circle CI | Circle CIのArtifact保存場所 |
$SLACK_TEST_HOOK | 自分 | SlackのWebHook用。任意の名前をつける |
実行結果
※ :circleci:
でSlackにEmoji登録してあります
- Slack に通知がきます
- 通知のリンクからカバレッジレポートを開きます