はじめに
うさぎの現場、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アプリ(ボット)を作成します。
任意のApp Name、紐づけるワークスペースを選択した上で、Create Appします。
「OAuth & Permissions」を押下します。
Scooes→「Bot Token Scopes」から「chat:write」の権限をbotに付与します。
「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は通知したいチャンネルの以下の値を使用してください。
通知内容(payload)は以下から作成しています。
通知内容に絵文字を含めたり、リンクを含めることができます。詳しく知りたい方は「Slack block-kit-builder」等で検索してみてください。
GitHubリポジトリのシークレットにSlack APIトークンを設定
GitHubにログインし「Setting」→「Secrets and variables」→New repository secret」から
取得したSlack APIトークンを設定していきます。
KEY名はymlファイルに記載した名前に合わせてください。
動作確認
ソースコードをpushするとGitHub Actionsが起動します。
GitHubの「Actions」タブを見ると作成したCIが実行され成功していることが確認できます。
Slack側にも、通知が来ていることを確認できました。
終わりに
本記事はここまでとなります。
最後にGitHub Actionsの学習におすすめのUdemy講座を紹介します。
いずれも多くの方に支持されているベストセラーです。是非、学習にご活用ください。
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢
コメント