Vercelのgit連携でデプロイが弾かれる——コミットのメールがGitHubに紐づいてないと止まる
Vercelのgit連携でpushしたのにビルドが走らず本番に出ない。privateリポジトリでは、コミットのauthorメールがGitHubの登録済みメール(=プロジェクトにアクセス権のあるアカウント)に紐づかないと弾かれる。git config user.emailで直すが、既存コミットのRedeployでは直らない理由まで。
Vercel の GitHub 連携でデプロイしたら、ビルドが走らず本番に出ない。エラーは「Git author must have access to project」といった、コミットの author を GitHub ユーザーに紐づけられない趣旨のもの。初回のインポートは通ったのに、次の push で急に止まった、ということもある。原因と直し方をまとめる。
事象
git push しても Vercel 側でビルドが走らず、デプロイが失敗して本番に出ない。エラーは「コミットの author を GitHub ユーザーに紐づけられない」という趣旨で、Git author must have access to project のように出る。
原因
Vercel は、private リポジトリのデプロイで、コミットの author メールアドレスがちゃんとした GitHub ユーザーに紐づくかをチェックしている。正確には「author メール → GitHub の verified email(登録・確認済みのメール)→ その Vercel プロジェクトにアクセス権のあるアカウント」という連鎖がつながる必要がある。どこかで切れると、そのコミットは「誰が上げたか確認できない」と見なされ、デプロイが弾かれる。
注意点が2つ。ひとつは、これは private リポジトリの話だということ。public リポジトリはこの突合が実質かからない(誰でも見られる前提だからだ)。もうひとつは、Hobby(個人)と Pro でしきい値が違う。Hobby では「commit author = そのアカウント本人」、Pro では「commit author がチームメンバー」であることが条件になる。
解決策
コミットの author メールを、その GitHub アカウントに登録済み(verified)のメールにする。
git config user.email "登録済みのメール"
GitHub 側の登録メールは Settings → Emails で確認できる。メールは小文字でそろえる(大文字が混じると一致しないことがある)。
すでに弾かれたコミットは、これだけでは直らない。author メールはコミットに焼き込まれているので、正しいメールを設定したうえで新しいコミットを積んで push し直す。ダッシュボードの「Redeploy」は既存コミットの焼き直しで、author が変わらないので効かない。
見分け方
- デプロイが失敗し、author/committer を GitHub ユーザーに紐づけられない系のエラーが出たらこれ
- private リポジトリで、
git logの author に心当たりのないメールが入っていないか確認する
GitHub に登録していないメールでコミットしていると踏みやすい。private に上げるなら、author メールは連携先アカウントに登録済みのものにそろえておく。