🧚
Github WorkflowsでSlack通知を実現する。
Github WorkflowsでSlack通知を送信する方法を記述します。
GithubでCI/CDを実現する際、必要になることは多々あり。
事前準備
- Slackのワークスペースを作成すること
- SlackのAppを作成し、Appとワークスペースが連携されていること
- Incoming Webhooksで発行された
Webhook URL
を取得しておくこと
1~3の手順はSlack:Webhook URL取得してSlackに通知するの記事の手順で作成ください。
Github Workflowsの作成
slackapi公式のアクションアプリを利用する
slack apifでは(slackapi/slack-github-action)[https://github.com/slackapi/slack-github-action]を準備しています。
アクションアプリと事前準備で行ったIncoming Webhooks
を組み合わせることで、簡単に Github ActionsからSlackのチャンネルに通知することができます。
Workflowsの定義
以下のコードを利用します。
SLACK_WEBHOOK_URLの値は、自身で発行した Webhook URLに置き換えてください。
name: push to slack notification
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Post to a Slack channel
id: slack
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"text": "GitHub Action build result: ${{ job.status }}\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "GitHub Action build result: ${{ job.status }}\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}"
}
}
]
}
env:
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
SLACK_WEBHOOK_URL: "YOUR SLACK WEBHOOK_URL"
結果
Github Workflowsの結果
JOB実行に成功しています。
Slackの結果
Slackのチャンネルに通知が届くようになります。
応用部分
SLACK_WEBHOOK_URLの値をGithub Environmentのシークレットに保存する
SLACK_WEBHOOK_URLの値はシークレットな情報となります。
- Githubの環境変数に登録しシークレットな値として管理すること
- 環境変数に宣言することで、他のWorkflowsで利用することができること
■ 変更前
SLACK_WEBHOOK_URL: "YOUR SLACK WEBHOOK_URL"
■ 変更後
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
※ シークレットのキーは、SLACK_WEBHOOK_URLで登録
Discussion