LoginSignup
40
23

More than 3 years have passed since last update.

CircleCI Orbsで、jobの結果をslackに通知する

Last updated at Posted at 2019-10-24

CircleCIでjobの結果を通知する:santa:

TL;DR

  • CircleCI Orbsを使用して簡単にslackでjobの結果を通知する
  • 成功、失敗をIFなどで条件分けする必要なし
  • webhook取得

環境

CircleCI 2.1
orbs: slack: circleci/slack@3.4.2

Orbsとは簡単に言うと、CircleCIに用意されたパッケージを使用することです(公式 CircleCI Orbsとは)
Orbsを使用すると記述量減るし、簡単にCI実装できます:santa:

流れ

  1. webhook取得
  2. circleciにwebhookを設定
  3. .circleci/config.ymlを設定
  4. 完了
  5. 失敗時のみ通知

1. webhook取得

下記URLから結果を流したいslackチャンネルを選択してwebhookを取得

こんなURLが取得できるはずですのでコピーしておきましょう

https://hooks.slack.com/services/hoge/huga

2. CircleCIの環境変数にwebhookのurlを設定

screenshot 2019-10-24 17.45.34.png

CircleCIの設定画面(歯車⚙みたいなやつ)

「Environment Variables」

「Add Variable」をポチ🐶

SLACK_WEBHOOKという変数名で追加

screenshot 2019-10-24 17.57.26.png

実際の値はxxxxで表示されて登録完了しました:santa:

3. .circleci/config.ymlを設定

なにはともあれ最小限のコードから:santa:

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. 完了

↓成功時のメッセージはこんなかんじです(モザイク多くてごめんなさい)
screenshot 2019-10-24 18.06.03.png

↓失敗時のメッセージはこんなかんじです(モザイク多くてのり弁みたいでごめんなさい)
screenshot 2019-10-24 18.37.18.png

失敗時のみ通知

通知うざいなーってなって、失敗時のみ通知させたいときは下記のようにパラメーター設定すればOKです

circleci/config.yml
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)なども使えて便利ですねー:santa:

Orbsで用意されているパッケージを使用すると、CircleCIでの記述量が減るのでOrbsで用意されているものは積極的に使用していきたいと思いました:santa:

使えるOrbs 一覧はこちら

次はECR、ECSのデプロイをOrbs使って実装した記事はこちらです:santa:

参考

CircleCI Orbsとは

40
23
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
23