こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。
CircleCIの実行結果をSlackに通知するにはアプリの連携だけでなく、CircleCIの設定ファイルを編集する必要があります。
設定ファイルの記述が正しくないとCircleCIの結果がうまくSlackに通知されないため、設定ファイルを書いたことがない人にとっては少しハードルが高いです。
そこで今回はCircleCIの結果をSlackに通知させる手順について紹介します。特にCircleCIの設定ファイルの書き方について詳しく解説していきます。
CircleCIのバージョンは2.1を利用します。
目次
通知対象のワークスペースにCircleCIのSlackアプリをインストールする
SlackにCircleCIのアプリをインストールします。アプリのインストールはこちらからできます。
Slackアプリ上でインテグレーションの設定を行う
「どのチャンネルに」「どういった名前で」「どういったアイコンで」という通知設定をCircleCIのSlackアプリ上で行います。
通知対象のリポジトリにWebhook URLを登録する
CircleCIのSlackアプリをインストールするとhttps://hooks.slack.com/services/xxxx
というWebhook URLが発行されるので、これを通知対象のリポジトリに保存します。
保存場所はリポジトリの設定画面の『Slack Integration』にある『Add Slack Webhook URL』です。
リモートリポジトリとCircleCIの連携がまだの場合はCircleCI を始めるを参考にしてください。
CircleCIの設定ファイルを編集する
CircleCI 2.1からはCircleCI Orbsと呼ばれる共通パッケージが利用できます。Orbを利用することで記述が簡潔になります。
CircleCIとSlack通知を連携する際にもSlack用のOrbを利用します。
今回は2020年7月現在、最新版のcircleci/slack@3.4.2
を利用します。
SlackのOrbには大きくわけると3つの通知の種類があります。
- approval: 承認通知。jobを実行するのに承認依頼が必要な場合などに利用
- notify: カスタムメッセージの通知
- status: jobの実行結果の通知
circleci/slack
のUsage Examplesを参考に.circleci/config
を編集します。設定ファイルはあくまで一例です。
.circleci/config.yml
jobs:
slack-notification:
docker:
- image: buildpack-deps:trusty
steps:
- run: exit 0
- slack/status
orbs:
slack: circleci/slack@3.4.2
version: 2.1
workflows:
my-workflow:
jobs:
- slack-notification
設定ファイルの補足説明は下記の通りです。
- my-workflowというワークフロー名を定義
- slack-notificationというジョブ名を定義
- my-workflowのワークフローにはslack-notificationが含まれている
- slack-notificationはdocker環境で実行されている
- slack-notificationのジョブにはslack/statusという実行ステップがある
上記の設定ファイルを利用すると、リモートリポジトリーでのCircleCI完了をトリガーに、以下のような通知がSlackに送られます。
なお、jobを定義する際は実行環境の定義が必要なので注意してください。実行環境はdocker
以外にもmachine
、macOS
から選べます。1
CircleCIの設定ファイルの各プロパティーの詳細についてはCircleCI を設定するを参照してください。
参考: ローカルで設定ファイルのバリデーションチェックをする方法
macOSの場合、brewを利用してCircleCI CLIのインストールができます。以下のコマンドで設定ファイルのバリデーションをチェックできます。
### macOSの場合はbrewを使ってインストール
$ brew install circleci
### バリデーションチェック
$ circleci config validate -c .circleci/config.yml
まとめ
以上でCircleCIとSlackの連携方法について紹介を終わります。
- ワークスペースにCircleCIのSlackアプリをインストール
- Slackアプリ上でインテグレーションの設定を行う
- リポジトリにWebhook URLを登録
- CircleCIの設定ファイルを編集
この記事がいいなと思いましたらTwitter(@nishina555)のフォローもよろしくお願いします!