Slack 通知のセットアップ¶
GitHub Actions の実行結果を Slack の指定チャンネルへ投稿する仕組みのセットアップ手順。
一度設定すれば自動運用される。共通の Secret SLACK_WEBHOOK_URL を使う。
通知される対象¶
| トリガー | 通知内容 | ワークフロー |
|---|---|---|
| モバイル OTA (EAS Update) 公開成功 | Expo Updates URL + QR コード | .github/workflows/mobile-update.yml |
ℹ️ Web (Cloudflare Pages) / API (Cloudflare Workers) のデプロイは通知対象外。 Web の URL は Cloudflare ダッシュボードの Deployments、API の URL は GitHub Actions の step summary で確認する。 (以前は
notify-cf-pages.ymlが CF Pages の Preview URL を Slack に投稿していたが、 運用不要になったため削除済み。)
セットアップ手順¶
Step 1: Slack に Incoming Webhook を作成¶
- ブラウザで https://api.slack.com/apps を開く
Create New App→From scratch- 入力:
- App Name:
waste-link deploy bot(任意) - Pick a workspace: 通知したい Slack ワークスペースを選択
- App Name:
Create Appをクリック- 左メニュー
Features→Incoming Webhooksを開く Activate Incoming Webhooksを On- ページ下部の
Add New Webhook to Workspaceをクリック - 投稿先チャンネルを選択(例:
#waste-link-deploysのような専用チャンネル を事前に作っておくと整理しやすい) Allowをクリック- 生成された
Webhook URL(https://hooks.slack.com/services/T...) を コピー
💡 専用チャンネルにしておくと、通知頻度が高い時にメインの会話を汚さない。
Step 2: GitHub Secrets に登録¶
- https://github.com/kyoei-paper/waste-link/settings/secrets/actions
New repository secret- 入力:
- Name:
SLACK_WEBHOOK_URL - Secret: Step 1 でコピーした URL
- Name:
Add secret
Step 3: 動作確認¶
SLACK_WEBHOOK_URL を登録した状態で、モバイル OTA 更新
(mobile-update.yml。手動 dispatch または対象ブランチへの push)を実行する。
公開が完了すると Expo の Updates URL と QR コードが Slack に届く。
通知を一時的に止めたい場合¶
GitHub Secrets から SLACK_WEBHOOK_URL を削除する。
各ワークフローは SLACK_WEBHOOK_URL 未設定時に通知ステップを silent skip する
(ジョブ本体は緑のまま)。完全に止めたい場合は Slack App 自体を Slack 側で削除する。
チャンネルを増やしたい / 振り分けたい場合¶
例: staging / production を別チャンネルにしたい
- Slack App で Webhook を 2 つ作成(チャンネル別)
- GitHub Secrets を 2 つ用意:
SLACK_WEBHOOK_URL_STAGING/SLACK_WEBHOOK_URL_PRODUCTION - ワークフローの
webhook値を出力変数で分岐:
トラブルシュート¶
| 症状 | 原因 / 対処 |
|---|---|
| Slack に通知が来ない | (1) Secrets に SLACK_WEBHOOK_URL が登録されているか確認(2) ワークフロー本体が緑になっているか確認(3) Slack App が削除されていないか |
| 通知先チャンネルを変えたら届かなくなった | Incoming Webhook は作成時のチャンネルに紐付き、後から変更不可。 Slack App の Incoming Webhooks で新チャンネル用 Webhook を「Add New Webhook to Workspace」で発行 → GitHub Secret SLACK_WEBHOOK_URL を新 URL に上書き。古い Webhook はそのページから Remove。下記「Webhook URL の検証」も参照 |
invalid_payload で通知失敗 |
Webhook URL が壊れている / App が無効化された。Slack App ページで Webhook を再確認・必要なら作り直し |
| ワークフロー自体は緑なのに Slack に来ない | (1) 旧チャンネルに飛んでいる(2) Slack 側で App がチャンネルからキックされた、を疑う。下記「Webhook URL の検証」コマンドで切り分け |
| 通知が遅延する | Slack 側の WebSocket 接続遅延が主因。GitHub Actions のログでステップ自体の所要を確認 |
Webhook URL の検証コマンド¶
GitHub Secret に入っている Webhook URL がどのチャンネルに紐付いているか確認するシンプルな手段:
WEBHOOK="https://hooks.slack.com/services/T.../B.../..." # 確認したい URL
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"waste-link webhook ping"}' "$WEBHOOK"
| レスポンス | 意味 |
|---|---|
ok |
URL は有効。Slack に飛んでいるが「想定したチャンネルではない」可能性あり(旧チャンネルを開いて見ること) |
invalid_token / no_service |
URL が失効。Slack App ページから再発行 |
channel_not_found |
紐付いたチャンネルが削除/アーカイブされた。新規 Webhook を発行 |
invalid_payload |
URL は有効だが payload 不正 |