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を設定しています