【GitHub】GitHub Actionsを使用したSlack通知の実装

【GitHub】 GitHub Actionsを使用した Slack通知の実装 インフラ
スポンサーリンク

はじめに

この記事で分かること
  • GitHub Actionsを使用したSlack通知の実装
ぴんくうさぎ
ぴんくうさぎ

うさぎの現場、CIでGitHub Actionsを使っているんだけど、

デプロイするとSlackに通知がくるよ!どうやるの?

GitHub Actionsの基礎知識については以下で解説しております。併せて参照ください。

Slack通知の概要

Slack通知は以下の3ステップで簡単に実現できます。

  • SlackAPIトークンの取得
    ここで作成したトークンを使用して、GitHubからSlackにアクセスします。

  • ymlファイルの作成
    実際にSlackに通知するためのワークフローを作成します。

  • GitHubリポジトリのシークレットにSlack APIトークンを設定
    ymlファイルにベタ書きでも動作はしますが、セキュリティ的に望ましくないため、GItHubのリポジトリのシークレットにトークンを設定します。ymlファイルからは環境変数として読み込みます。

SlackAPIトークンの取得

Slack APIにアクセス→「Create New App」→「From scratch」からSlackアプリ(ボット)を作成します。

Slack API: Applications | Slack
Slack API
From scratch

任意のApp Name、紐づけるワークスペースを選択した上で、Create Appします。

「OAuth & Permissions」を押下します。

OAuth & Permissions

Scooes→「Bot Token Scopes」から「chat:write」の権限をbotに付与します。

Bot Token Scopes

「OAuth Tokens for Your Workspace」からワークスペースと連携します。
正常に連携が完了すると、トークンが生成されます。メモ帳等に保存しておいてください。

OAuth Tokens for Your Workspace

最後に作成したアプリ(bot)をワークスペースに追加します。

アプリを追加する

「追加」を押下します。

アプリの追加

ymlファイルの作成

GitHub Actionsに関する記述は「.github/workflow」フォルダ配下の「ci.yml」に記述していきます。
任意のフォルダで以下の構成でファイルを作成してください。

│   
└── .github
    └── workflows
        └── ci.yml

ci.ymlの中身は以下になります。ActionはSlack-sendを使用しています。
今回は「push」をトリガーにSlack通知をするように実装しています。

name: Slack Notify Sample

on: [push]

jobs:
  notify:
    name: Slack Notify Sample
    runs-on: ubuntu-latest
    steps:
      - name: Slack Notify Sample
        uses: slackapi/slack-github-action@v1.24.0
        with:
          channel-id: '{チャンネルID}'
          payload: |
            {
              "attachments": [
                {
                  "blocks": [
                    {
                      "type": "header",
                      "text": {
                        "type": "plain_text",
                        "text": "Request for Approve",
                        "emoji": true
                      }
                    },
                    {
                      "type": "section",
                      "text": {
                        "type": "plain_text",
                        "text": "Slack通知サンプルです。",
                        "emoji": true
                      }
                    }
                  ]
                }
              ]
            }
        env:
          SLACK_BOT_TOKEN: ${{secrets.SLACK_API_TOKEN}}

赤字のチャンネルIDは通知したいチャンネルの以下の値を使用してください。

チャンネルID

通知内容(payload)は以下から作成しています。
通知内容に絵文字を含めたり、リンクを含めることができます。詳しく知りたい方は「Slack block-kit-builder」等で検索してみてください。

Find your workspace | Slack
Find and sign in to your Slack workspace.

GitHubリポジトリのシークレットにSlack APIトークンを設定

GitHubにログインし「Setting」→「Secrets and variables」→New repository secret」から
取得したSlack APIトークンを設定していきます。

KEY名はymlファイルに記載した名前に合わせてください。

GItHubにトークンを設定

動作確認

ソースコードをpushするとGitHub Actionsが起動します。
GitHubの「Actions」タブを見ると作成したCIが実行され成功していることが確認できます。

GItHub確認

Slack側にも、通知が来ていることを確認できました。

Slack確認

終わりに

本記事はここまでとなります。

最後にGitHub Actionsの学習におすすめのUdemy講座を紹介します。
いずれも多くの方に支持されているベストセラーです。是非、学習にご活用ください。

ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢

コメント