🧚

Github WorkflowsでSlack通知を実現する。

2023/09/14に公開

Github WorkflowsでSlack通知を送信する方法を記述します。
GithubでCI/CDを実現する際、必要になることは多々あり。

事前準備

  1. Slackのワークスペースを作成すること
  2. SlackのAppを作成し、Appとワークスペースが連携されていること
  3. 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