【入門編】GitHub Actionsでテスト失敗時の通知を自動化!SlackやDiscordと連携させる方法 – バージョン管理・CI/CD活用バイブル

こんにちは!日々の開発、本当にお疲れ様です。

チームで開発をしていると、「あれ、さっきのプルリクエスト、テスト落ちてたのに誰も気づかなくてマージしちゃった……!」なんてヒヤッとした経験、ありませんか?

プログラムのビルドやテストが失敗したとき、それにどれだけ早く気づけるかは、チームの生産性を左右する極めて重要なポイントです。毎回GitHubの画面を開いて「あ、落ちてる……」と確認しに行くのは、エンジニアの大切な時間を奪う無駄な作業ですよね。

今回は、GitHub Actionsを使って「テストが失敗した瞬間に、SlackやDiscordへ自動で通知を飛ばす仕組み」を一緒に作っていきましょう。

これをマスターすれば、あなたはもう「通知の見落とし」に怯える必要はなくなります。毎日の開発が劇的にスムーズになりますよ。さあ、一緒に設定していきましょう!

—

1. GitHub Actions とは?(基礎の確認)

まずは、今回主役となる GitHub Actions について軽くおさらいしておきましょう。

GitHub Actionsは、GitHub上でコードがプッシュされたり、プルリクエストが作成されたりしたときに、「自動で特定の作業(テスト、ビルド、デプロイなど)を実行してくれる機能」です。

  • 何が嬉しいの?

「コードを修正する ➔ GitHubに送る ➔ 自動でテストが走る ➔ 結果をチャットに通知する」という一連の流れを、人間が一切手を触れずに全自動で行うことができます。

今回は、この流れの中で「テストが失敗した」というシグナルをキャッチして、SlackやDiscordに「おい、テストが落ちてるぞ!」と叫ばせる設定を行います。

—

2. 事前準備:チャットツールの「Webhook URL」を取得する

GitHubからSlackやDiscordにメッセージを送るためには、専用の「宛先(Webhook URL)」が必要です。まずはそれぞれの準備をしましょう。

💡 Slackの場合

1. Slackの [API Apps ページ](https://api.slack.com/apps) にアクセスし、「Create New App」をクリックします。
2. 「From scratch」を選び、アプリ名(例: `GitHub Actions Bot`)と通知先のワークスペースを指定して作成します。
3. 左メニューの 「Incoming Webhooks」 を選び、機能を `On` に切り替えます。
4. ページ下部の 「Add New Webhook to Workspace」 を押し、通知したいチャンネルを選択して許可します。
5. 発行された 「Webhook URL」 をコピーして大切に控えておいてください。

💡 Discordの場合

1. 通知したいDiscordサーバーのチャンネル設定(歯車マーク)を開きます。
2. 「連携サービス」 > 「ウェブフック」 の順に進み、「新しいウェブフック」を作成します。
3. ボットの名前やアイコンを好みに設定し、「ウェブフックURL」 をコピーして控えておきます。

—

3. 最重要!GitHubシークレットの設定

コピーしたWebhook URLは、いわば「合鍵」のようなものです。これをそのままソースコード(設定ファイル)に書き込んで公開してしまうと、世界中の人に悪用されてしまいます。

そこで、GitHubの「Secrets(シークレット)」という安全な金庫にしまっておき、必要なときだけこっそり呼び出す仕組みを使います。

1. あなたのGitHubリポジトリのページを開きます。
2. 「Settings」 > 「Secrets and variables」 > 「Actions」 の順にクリックします。
3. 「New repository secret」 をクリックします。
4. 以下のように入力します。

  • Name: `SLACK_WEBHOOK_URL` (Discordの場合は `DISCORD_WEBHOOK_URL` など)
  • Secret: 先ほどコピーしたWebhook URLを貼り付け

5. 「Add secret」 を押して保存します。

これで安全な準備は完了です!

—

4. 動作確認!HelloWorld的ワークフローの作成

それではいよいよ、GitHub Actionsの設定ファイル(ワークフローファイル)を作っていきます。

リポジトリの直下に `.github/workflows/ci.yml` というファイルを作成し、以下のコードを書き込んでみてください。今回は「あえてテストが失敗するケース」を体験するために、ダミーの失敗テストを用意しています。

ワークフローの名前
name: CI with Chat Notification

どのようなタイミングでこの処理を動かすか(今回はmainブランチへのプッシュ時)
on:
push:
branches: [ “main” ]

jobs:
build-and-test:
name: Build and Test
runs-on: ubuntu-latest

steps:
# 1. リポジトリのコードをGitHub Actionsのサーバーに持ってくる

  • name: Checkout code

uses: actions/checkout@v4

# 2. テストの実行(今回は分かりやすくするために、意図的にエラーを起こします)

  • name: Run Tests

run: |
echo “テストを実行しています…”
# 意図的に終了コード1(エラー)を返してテストを失敗させる
exit 1

# 3. 【Slack通知】テストが失敗したときだけ動くステップ

  • name: Send Slack Notification on Failure

if: failure() # ←ここがポイント!前のステップ(テスト)が失敗した時だけ実行されます
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: repo,message,commit,author,action,eventName,ref,workflow
text: “🚨 【緊急】テストが失敗しました!修正をお願いします!”
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # 先ほど登録したシークレットを呼び出す

# (※Discordを使いたい場合はこちらを代わりに使ってください)
# – name: Send Discord Notification on Failure
# if: failure()
# uses: Ilshidur/action-discord@master
# env:
# DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
# with:
# args: “🚨 【緊急】テストが失敗しました!修正をお願いします! (Repository: {{ RPO }})”

🔍 コードの解説

  • `if: failure()`: この1行が魔法の呪文です。これによって、「前のステップ(テストなど)が成功したときは何もしない、失敗したときだけこの通知ステップを実行する」という制御ができます。毎回「成功しました!」と通知が来るとチャットがうるさくなってしまいますから、失敗時だけに絞るのがスマートなエンジニアの流儀です。
  • `uses: 8398a7/action-slack@v3`: GitHubのマーケットプレイスで公開されている、信頼性の高いSlack通知用の公式非公式アクションです。これを使うことで、面倒なコードを書かずに綺麗な通知が作れます。

—

5. さあ、実際に動かしてみよう!

作成した `ci.yml` をコミットして、GitHubの `main` ブランチにプッシュしてみましょう。

1. リポジトリの 「Actions」 タブを開きます。
2. ワークフローが走り出し、テストのステップで赤く「×(失敗)」になるのを確認します。
3. その直後、あなたのSlack(またはDiscord)のチャンネルを確認してください……!

ピコンッ!と音が鳴り、次のような通知が届いているはずです。

> 🚨 【緊急】テストが失敗しました!修正をお願いします!
> Repository: your-name/your-repo
> Commit: fix: update workflow
> Author: your-name

大成功です!これで、もし未来の開発で誰かがバグを含んだコードを混ぜてしまっても、チーム全員が即座に検知して対応できるようになりました。

—

おわりに

いかがでしたでしょうか?
たったこれだけのYAMLファイルを書くだけで、開発チームの「安心感」と「安全性」が劇的に向上します。

「エラーに早く気づけること」は、バグの修正コストを最小限にするための最強の武器です。ぜひあなたのプロジェクトにも導入してみてくださいね。

それでは、快適なCI/CDライフを!あなたの開発チームの成功を心から応援しています。

タイトルとURLをコピーしました