背景
以前CircleCIの新UI後のslack連携を書きました。
今見るとまたやり方が変わっている(Webhook URL→Slackアプリ)ので、やり方を説明します。
環境
- CircleCI v2.1
- circleci/slack v4.4.2
手順
大きく3ステップあります。
1. Slackアプリを作る
Setup · CircleCI-Public/slack-orb Wiki · GitHub
に沿って進めばOKです。
からCreate New Appで新しいアプリを作ります。
左メニューでOAuth & Permissionsを選択し
ScopesのBot Token Scopesの方で
以下の権限を付与します。
権限 | 目的 |
---|---|
chat:write |
このアプリを追加したチャンネルでメッセージを投稿するため |
chat:write.public |
このアプリをチャンネルに追加してなくてもメッセージを投稿できるように アプリをチャンネル追加していれば不要? |
files:write |
ファイルアップロードのため(まだ未使用?) |
こんな状態になります。
権限を設定したらOAuth Tokens for Your Workspaceでトークンを発行します。
発行されました。
2. CircleCIのContextsの環境変数にトークンを設定
Contextsを使って各プロジェクトでこのSlackアプリを使えるようにします。
設定する環境変数は以下です。
環境変数 | 説明 |
---|---|
SLACK_ACCESS_TOKEN |
先程生成したSlackアプリのトークン |
SLACK_DEFAULT_CHANNEL |
送信するチャンネルが指定されていない時のデフォルトチャンネル |
例としてSLACK
という名前のContextsを用意してみましたが、このように2つ設定された状態になります。
3. Orbで↑を使う
まずはorbの指定をします。
orbs: slack: circleci/slack@4.4.2
次にorbで参照している環境変数を読み込めるよう、各jobでcontextの設定をします。
workflows: build_and_notify: jobs: - build: context: - SLACK
v4からはメッセージのテンプレートが用意さているので、以下のように指定するだけで最低限の通知を送ることができます。
失敗時
- slack/notify: channel: ABCXYZ event: fail template: basic_fail_1
channel
はoptionalで、未指定の場合はSLACK_DEFAULT_CHANNEL
で設定したチャンネルになります。
成功時
- slack/notify: channel: ABCXYZ event: pass template: basic_success_1
tag切ったとき
- slack/notify: channel: ABCXYZ event: pass template: success_tagged_deploy_1
その他詳細な設定
の後半のTipsを参考にしてください。