CircleCIでjobの結果を通知する
TL;DR
-
CircleCI Orbs
を使用して簡単にslackでjobの結果を通知する - 成功、失敗をIFなどで条件分けする必要なし
- webhook取得
環境
CircleCI 2.1
orbs: slack: circleci/slack@3.4.2
- [Circleci Orbs](CircleCI Orbsとは)とは
Orbsとは簡単に言うと、CircleCIに用意されたパッケージを使用することです(公式 CircleCI Orbsとは)
Orbsを使用すると記述量減るし、簡単にCI実装できます
流れ
- webhook取得
- circleciにwebhookを設定
-
.circleci/config.yml
を設定 - 完了
- 失敗時のみ通知
1. webhook取得
下記URLから結果を流したいslackチャンネルを選択してwebhookを取得
こんなURLが取得できるはずですのでコピーしておきましょう
↓
https://hooks.slack.com/services/hoge/huga
2. CircleCIの環境変数にwebhookのurlを設定
CircleCIの設定画面(歯車⚙みたいなやつ)
↓
「Environment Variables」
↓
「Add Variable」をポチ🐶
↓
SLACK_WEBHOOK
という変数名で追加
↓
実際の値はxxxxで表示されて登録完了しました
3. .circleci/config.yml
を設定
なにはともあれ最小限のコードから
version: 2.1
orbs:
slack: circleci/slack@3.3.0
jobs:
deploy-and-notify:
executor: container
steps:
- checkout
- run: ./deploy.sh
- slack/status:
success_message: ':circleci-pass: $CIRCLE_BRANCH のデプロイが完了しました\n:github_octocat: User:$CIRCLE_USERNAME'
failure_message: ':circleci-fail: $CIRCLE_BRANCH のデプロイが失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
webhook: '${SLACK_WEBHOOK}'
ポイント
- orbsを最初で宣言みたいする
- stepsが成功ステータス→slackに
success_message
が流れる - stepsが失敗ステータス→slackに
failure_message
が流れる - メッセージ内で
:circleci-pass:
や:circleci-fail:
など絵文字が使える
4. 完了
↓成功時のメッセージはこんなかんじです(モザイク多くてごめんなさい)
↓失敗時のメッセージはこんなかんじです(モザイク多くてのり弁みたいでごめんなさい)
失敗時のみ通知
通知うざいなーってなって、失敗時のみ通知させたいときは下記のようにパラメーター設定すればOKです
orbs:
slack: circleci/slack@3.4.2
test:
executor: container
steps:
- checkout
- attach_workspace:
at: .
- run: npm test
- slack/status:
fail_only: true #これを設定する
failure_message: ':circleci-fail: テスト失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
webhook: '${SLACK_WEBHOOK}'
あとがき
circleciでデフォルトで使用できる環境変数もslackのメッセージに組み込めるので
- どのブランチ(CIRCLE_BRANCH)か、
- 誰がプッシュしたのか(CIRCLE_USERNAME)なども使えて便利ですねー
Orbsで用意されているパッケージを使用すると、CircleCIでの記述量が減るのでOrbsで用意されているものは積極的に使用していきたいと思いました
使えるOrbs 一覧はこちら
次はECR、ECSのデプロイをOrbs使って実装した記事はこちらです