【Github】Github Actions ~ Slack連携 ~

■ はじめに

Github Actions が完了したら、Slackで通知するって
よくあることをやってみる

ぶっちゃけ、以下のサイトがよくかけているので、
こちらを見ながらやった方がいい

https://qiita.com/seratch/items/28d09eacada09134c96c

目次

【0】Slack連携するGithub Actions
【1】前準備1:Slack側の設定
 1)Slackアプリの作成
 2)Webhook URL生成
【2】前準備2:Github側の設定
 1)Secrets の作成
【3】Github Actionsの実装
 1)サンプル

【0】Slack連携するGithub Actions

* 色々あるようだが、Slack公式のがよさげ

https://github.com/slackapi/slack-github-action

【1】準備:Slackの設定「Slack アプリ設定の作成」

* 以下の関連記事でもやったがちょっと違うやりかた。

Slack ~ Access Token ~
https://dk521123.hatenablog.com/entry/2021/10/13/092235
Slack ~ Incoming Webhooks ~
https://dk521123.hatenablog.com/entry/2021/10/15/091842

1)Slackアプリの作成

[1] 以下のサイトを開き、「Create an App」ボタン押下

https://api.slack.com/apps

[2] 「From an app manifest」を選択
[3] 「Pick a workspace to develop your app」で
  自分のWorkspaceを選択し、「Next」ボタン押下
[4] 「Enter app manifest below」画面において、
  以下「app manifest」をまるっとコピペし、「Next」ボタン押下
[5] 「Review summary & create your app」画面で「Create」ボタン押下

app manifest

_metadata:
  major_version: 1
  minor_version: 1
display_information:
  name: github-action-result-sender
features:
  bot_user:
    display_name: github-action-result-sender
oauth_config:
  scopes:
    bot:
      - incoming-webhook

2)Webhook URL生成

[1] 左ペインにある[Incoming Webhooks] を選択
[2] 「Add New Webhook to workspace」ボタン押下
[3] 「github-action-result-sender の投稿先はどちらにしますか?」で
  対象のチャネルを選択し、「許可する」ボタン押下
[4] Webhook URL(https://hooks.slack.com/services/XXXX/XXXX)をコピーしておく

【2】前準備2:Github側の設定

1)Secrets の作成

[1] 対象のGithub リポジトリにアクセスする
[2] [Settings]-[Secrets and variables]-[Actions]を選択
[3] 「Repository secrets」欄の「New repository secret」ボタン押下
[4] 以下を入力し、「Add secret」ボタン押下
 * Name: SLACK_WEBHOOK_URL
 * Secret: <コピーしておいたWebhook URL(https://hooks.slack.com/services/XXXX/XXXX)>

【3】Github Actionsの実装

* 以下のサンプルを実行すると、Slackに通知が来るはず
 => ブラウザからも通知は見れる

https://slack.com/intl/ja-jp

通知例

github-action-result-sender アプリ  00:35
:github: Result to build: success
Author: @xxxx

1)サンプル

.github/workflows/demo-slack.yml

name: RunDemoForSlack

on:
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # Check out theis repo
      - uses: actions/checkout@v4

      # Start a Slack workflow using a webhook trigger
      # https://github.com/slackapi/slack-github-action
      - name: Send to Slack
        id: slack
        uses: slackapi/slack-github-action@v1.25.0
        with:
          payload: |
            {
              "text": ":github: Result to build: ${{ job.status }}\n\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}",
              "blocks": [
                {
                  "type": "section",
                  "text": {
                    "type": "mrkdwn",
                    "text": ":github: Result to build: ${{ job.status }}\n\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}"
                  }
                },
                {
                  "type": "context",
                  "elements": [
                    {
                      "type": "mrkdwn",
                      "text": "Author: <https://github.com/${{ github.event.sender.login }}|@${{ github.event.sender.login }}>"
                    }
                  ]
                }
              ]
            }
        env:
          SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

参考文献

https://qiita.com/seratch/items/28d09eacada09134c96c

関連記事

Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ セキュリティ/Third-Party Github Action ~
https://dk521123.hatenablog.com/entry/2024/04/05/000136
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github ~ Webhook 編 ~
https://dk521123.hatenablog.com/entry/2020/01/25/224402
Slack ~ Access Token ~
https://dk521123.hatenablog.com/entry/2021/10/13/092235
Slack ~ Incoming Webhooks ~
https://dk521123.hatenablog.com/entry/2021/10/15/091842