LoginSignup
44
31

More than 3 years have passed since last update.

GitHub Actionsでビルドの成功・失敗をSlackに通知する方法

Posted at

TL;DR

  • SlackのIncoming Webhookインテグレーションを利用します。
  • if: success(), if: failure() それぞれでステップを分け、通知結果を調整します。

前置き

知っている人は既に実践していると思いますが、意外と初心者にわかりやすい情報が少ない気がするので書いておきます。

GitHub Actionsでビルド結果をSlackに通知するには

2020-06-10現在、GitHub Actionsには標準でジョブの実行結果をSlack等に通知する機能がありません。(※例外については後述)
そこで、マーケットプレイスにあるアクションか、またはSlackのIncoming Webhook URLを叩くコマンドを追加する形になると思います。

例外

上記の例外として、以下のケースについては、GitHub公式のSlackインテグレーションで通知を受取ることができます:

  • プルリクエストの通知を有効にしていれば、プルリクエストに紐付いたビルド結果はわかるようです。
  • Deploymentsの通知を有効にしていれば、Deploymentsを作成するワークフローの実行結果はわかります。1

ワークフロー設定例

下は、git pushによって go test を実行するワークフローの設定例です。
Slack通知には、rtCamp/action-slack-notifyというアクションを使いました。

go-test.yml
name: go-test

on: push

env:
  SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-go@v2
      with:
        go-version: '1.14.4'
    - run: go get -v ./...
    - run: go test -v ./...
      id: test

    # テスト成功時はこちらのステップが実行される
    - name: Slack Notification on Success
      if: success()
      uses: rtCamp/action-slack-notify@v2.0.2
      env:
        SLACK_CHANNEL: ci
        SLACK_TITLE: Test Success
        SLACK_COLOR: good

    # テスト失敗時はこちらのステップが実行される
    - name: Slack Notification on Failure
      uses: rtCamp/action-slack-notify@v2.0.2
      if: failure()
      env:
        SLACK_CHANNEL: ci
        SLACK_TITLE: Test Failure
        SLACK_COLOR: danger

補足:

  • 事前にリポジトリのSecretsに SLACK_WEBHOOK_URL というキーで、SlackのIncoming Webhook URLを設定しています

Slack通知結果の例

Screenshot from 2020-06-10 23-34-27.png

リファレンス

脚注

44
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
31