😄

Github ActionsからSlackに通知を送ってみる

2024/12/18に公開

Github ActionsからSlackに通知を送ってみる

Github Actionsの結果をSlackのIncoming Webhookインテグレーションを利用し、通知してみるメモ

作業

1.WebHookインテグレーションURLの作成

以下のURLにアクセスし、インテグレーションを追加する

2. ワークフローの作成

まず『SLACK_WEBHOOK』Repository Secrets作成する。valueには1のWebHook URLを張り付け

成功(success())・失敗(failure())でそれぞれSlackから通知を送るようにしている。
rtCamp/action-slack-notifyというアクションを使用して通知を行う。設定が簡単に行えるので選択した。

name: "Code check"

on:
  workflow_dispatch:
  pull_request:
    types: [opened, synchronize]

env: 
  SLACK_USERNAME: DeployBot
  SLACK_ICON: https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png
  SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  id-token: write
  contents: read
  
jobs:
  code-check:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    permissions:
      pull-requests: write
      contents: read
    steps:
      - uses: actions/checkout@v4
      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ env.SLACK_WEBHOOK }}
          SLACK_COLOR: ${{ job.status }}
          SLACK_TITLE: 静的解析の開始
          SLACK_MESSAGE: |
            - リポジトリ: ${{ github.repository }}
            - ハッシュ: ${{ github.sha }}

      - uses: "./.github/actions/setup"
          
      - name: Run lint
        run: |
          echo "::notice title=lintの実行"
          echo "::group::npm run lint"
          docker compose run --rm --user 1000:1000 app npm run lint
          echo "::endgroup::"
          
      - name: Run tsc
        run: |
          echo "::notice title=tscの実行"
          echo "::group::tsc"
          docker compose run --rm --user 1000:1000 app npx tsc
          echo "::endgroup::"

      - name: Success Notification
        uses: rtCamp/action-slack-notify@v2
        if: success()
        env:
          SLACK_WEBHOOK: ${{ env.SLACK_WEBHOOK }}
          SLACK_COLOR: good
          SLACK_TITLE: ✅ 静的解析成功
          SLACK_MESSAGE: |
            - 環境: dev
            - リポジトリ: ${{ github.repository }}

      - name: Failure Notification
        uses: rtCamp/action-slack-notify@v2
        if: failure()
        env:
          SLACK_WEBHOOK: ${{ env.SLACK_WEBHOOK }}
          SLACK_COLOR: danger
          SLACK_TITLE: ❌ 静的✅解析の失敗
          SLACK_MESSAGE: |
            - 環境: dev
            - エラー箇所: ${{ github.job }}
            - リポジトリ: ${{ github.repository }}
            詳細は GitHub Actions ページで確認: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

案外簡単にセットアップすることが出来た。これでGithub Actionsページでずっと結果待ちしなくてもよくなる。

参考

最後に

間違っていることなどあればコメントに書いていただけると幸いです。
よろしくお願いいたします。

GitHubで編集を提案

Discussion