Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

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

リファレンス

脚注

progrhyme
Software Engineer. Was @key-amb
https://progrhy.me/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away