Circle CIのSlackへの通知を分かりやすくする

2018-06-08#circleci

Circle CI 2.0で導入されたworkflowを使うと、Slackへの通知にどのjobが完了したのかが含まれていなくて困ることがあった。特に失敗したときにどのjobが失敗したのかSlackでは分からないのが不便だった。

そこで、Slackへの通知を分かりやすくするための設定をいくつかしてみたところ、劇的によくなったので紹介したい。

通知スクリプトを自作する

#!/bin/bash -e
 
payload=$(cat << EOS
{
  "attachments": [
    {
      "title": "Success",
      "title_link": "${CIRCLE_BUILD_URL}",
      "text": "\`workflow/${CIRCLE_STAGE}\` in ${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME} (${CIRCLE_BRANCH})",
      "mrkdwn_in": ["text"],
      "color": "good"
    }
  ]
}
EOS
)
 
curl \
  -X POST \
  -H 'Content-Type: application/json' \
  --data "${payload}" \
  ${SLACK_WEBHOOK_URL}

通知スクリプトを設定する

jobs:
  test:
    steps:
      # ...
      - run: ./.circleci/notify-success
      - run:
          command: ./.circleci/notify-failure
          when: on_fail