技術 約3分で読めます

Vercel デプロイ失敗からの教訓:GitHub 接続とローカル Git 設定の落とし穴

💥 発生した問題:Vercel が最新のコミットを検知しない

このサイトを作成したあと、GitHub に新しいコミットをプッシュしても Vercel がデプロイをトリガーしないという問題に直面。

試した解決策(失敗)

  1. Vercel と GitHub の再接続/再認証:Vercel から Disconnect し、再接続、プロジェクトを削除して再作成してつなぎ直し、GitHub の認証情報も確認しましたが、状況は変わらず。
  2. アドレスの確認:GitHub リポジトリのアドレスと Vercel に設定されているリポジトリのアドレスが一致していることを確認したので余計にドツボにハマる。

🔍 原因:ローカル Git リポジトリの古いuser.email

問題の原因は、ローカル環境(Windows PC)に保存されていた Git リポジトリの user.email が、現在の GitHub リポジトリの メールアドレス と異なっていたこと。

これは、作業 PC の環境を古い設定から移行してきたときに、Gitの設定も古いまま持ってきてしまった模様。

仕組み

Vercel は GitHub の Webhook を利用してプッシュイベントを検知し、デプロイをトリガーしている。

その際、Vercel は コミットの author email をチェックして、そのメールアドレスが Vercel チーム/アカウントにアクセス権を持つユーザー かどうかを確認。

  1. ローカルから git push を実行
  2. GitHub にコミットが反映される
  3. Webhook で Vercel にプッシュイベントが通知される
  4. Vercel がコミットの author email を確認
  5. そのメールアドレスが Vercel アカウントと一致しないため、デプロイがトリガーされない

CLIでデプロイしようとすると、以下のエラーが表示されました:

Error: Git author XXXXXXX must have access to the team XXXXXXX's projects on Vercel to create deployments.

✅ 解決策:Git の user.email を Vercel アカウントに合わせる

根本的な解決策は、Git の user.email を Vercel アカウントのメールアドレスに統一すること。

1. 現在の設定を確認

# グローバル設定を確認
git config --global user.email

2. user.email を修正

# グローバル設定を変更(PC全体に適用)
git config --global user.email "your-vercel-account@example.com"

# または、このリポジトリのみ変更
git config user.email "your-vercel-account@example.com"

3. デプロイの強制トリガー

メールアドレスを修正した後、新しいメールアドレスでコミットを作成してプッシュ。

# 空のコミットを作成(新しい user.email で)
git commit --allow-empty -m "Trigger deploy"
# プッシュ
git push

この操作により、Vercel が変更を正しく検知し、無事に最新のコミットがデプロイされた。


💡 まとめ

今回の失敗から以下の作業はちゃんと確認する。

  1. Vercel はコミットの author email を検証する
    • デプロイをトリガーするには、コミットの author email が Vercel アカウント(またはチームメンバー)と一致している必要がある
  2. Git のグローバル設定に注意 🚨
    • 作業 PC を移行したり、複数のアカウントを使い分けている場合、git config --global user.email が意図しない値になっていることがある
  3. Vercel ダッシュボードではエラーが見えない
    • Webhook は発火しているが、email の不一致でサイレントに無視される。CLI でデプロイを試すとエラーメッセージが確認できる

作業環境を移行した際には、Git の設定が最新であることを必ず確認。