CircleCIの設定ファイルの文法は?CircleCIとSlack通知を連携させる手順

インフラ

こんにちは。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/slackUsage 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以外にもmachinemacOSから選べます。1

CircleCIの設定ファイルの各プロパティーの詳細についてはCircleCI を設定するを参照してください。

参考: ローカルで設定ファイルのバリデーションチェックをする方法

macOSの場合、brewを利用してCircleCI CLIのインストールができます。以下のコマンドで設定ファイルのバリデーションをチェックできます。

### macOSの場合はbrewを使ってインストール
$ brew install circleci

### バリデーションチェック
$ circleci config validate -c .circleci/config.yml

まとめ

以上でCircleCIとSlackの連携方法について紹介を終わります。

CircleCIとSlackの連携手順
  • ワークスペースにCircleCIのSlackアプリをインストール
  • Slackアプリ上でインテグレーションの設定を行う
  • リポジトリにWebhook URLを登録
  • CircleCIの設定ファイルを編集

この記事がいいなと思いましたらTwitter(@nishina555)のフォローもよろしくお願いします!