Procedure
vercel ls <project>で Status がUNKNOWN・Duration?のまま数分以上動かないことを確認(正常な静的サイトは数秒でReady)。- CLIでは原因が見えないので REST API で生の状態を取る:
TOKEN=$(node -e "console.log(JSON.parse(require('fs').readFileSync(process.env.HOME+'/Library/Application Support/com.vercel.cli/auth.json','utf8')).token)") curl -s -H "Authorization: Bearer $TOKEN" \ "https://api.vercel.com/v13/deployments/<dpl_ID or URL>?teamId=<team_xxx>" \ | python3 -c "import json,sys;d=json.load(sys.stdin);print(d.get('readyState'),d.get('readyStateReason'),d.get('seatBlock'))" readyState: BLOCKED+seatBlock.blockCode: COMMIT_AUTHOR_REQUIREDなら、コミットauthorのメールがGitHubアカウントに未登録(Hobbyプランはcommit authorがVercelユーザーに紐づく必要あり)。- 解除(実メールを公開せず匿名ハンドルを保つ場合):GitHub noreplyメールに切り替える。
force push は不要。新コミットが正規authorなら新デプロイは通る。GHID=$(gh api user --jq '.id'); GHLOGIN=$(gh api user --jq '.login') git config user.email "${GHID}+${GHLOGIN}@users.noreply.github.com" git commit --allow-empty -m "chore: redeploy with associated author" && git push - 新デプロイ Ready 後、本番ドメインへ curl で疎通・内容spot check(grep で新規文字列)まで確認して完了。
Pitfalls
vercel lsのUNKNOWNは CLI がBLOCKEDを解釈できないだけ。vercel inspect --logsもログ空・Builds 0ms で無情報。- デプロイURLを直接curlすると
instant-preview-siteのプレースホルダHTMLが200で返る=「200だが中身が違う」罠。必ず内容をgrepする。 - git連携デプロイだけでなく CLIの
vercel deployもブロックされる(ローカルgitのHEAD authorがメタデータとして送られるため)。authorを直すまで何度デプロイしても無駄。 - 旧BLOCKEDデプロイは放置で無害(公開されない)。
Verification
vercel ls <project>最新行が● Ready。- 本番URLで新規追加ファイル(例 /privacy.html)が200、HTMLに新規文字列が含まれる。