Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

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

alt

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 に通知がきます

f:id:tbpg:20161026022019p:plain

f:id:tbpg:20161026022023p:plain

関連資料