Vercel 協同合作注意事項

教學指南

AI 文章延伸

AI 幫你讀這篇文章

選擇平台後可直接帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。

Vercel 是一個專為前端框架優化的雲端部署平台,支援 Next.js、Astro、Nuxt 等主流框架。它最大的優勢是推 code 到 GitHub 就能自動部署,省去自己架設 CI/CD 的麻煩,對小團隊來說非常方便。

我們團隊最近有個 Next.js + Payload CMS 的專案就部署在 Vercel 上。結果同事推了一筆 commit 到 main,Vercel 沒有開始 build,而是直接顯示紅色的 Deployment Blocked:

The Deployment was blocked because the commit author does not have contributing access to the project on Vercel.

Vercel 顯示 Deployment Blocked

團隊有兩個人,我是 Vercel project owner,同事負責前端功能開發。這次他推了一個產品頁面的改版,結果部署直接被擋。

以下是完整的排查過程。結論先講:問題出在 Vercel 帳號的 GitHub Login Connection 沒有正確綁定。但為了找到這個答案,我們繞了不少路:

第一個懷疑:git commit email 不對

git log 檢查 commit 記錄,發現同事的 author email 是:

[email protected]

這是 macOS 的預設值,不是真正的 email。Vercel 透過 commit author email 來辨識「這筆 commit 是誰提交的」,一個本機名稱它當然對不上任何帳號。

請同事修正 git 設定:

git config user.email "[email protected]"
git commit --amend --reset-author --no-edit
git push --force-with-lease

修正之後到 GitHub 確認,commit author 確實變成 [email protected] 了。

結果 Vercel 還是擋。

第二個懷疑:沒有加入 Vercel team

點了 Deployment Blocked 旁邊的 Invite User 按鈕,彈出的對話框自動帶入 [email protected],但底下顯示紅字:

嘗試邀請顯示 already a member

[email protected] is already a member of this team.

所以不是沒邀請的問題。

Invite Team Members 確認畫面

第三個嘗試:Redeploy

既然 commit email 修了、team member 也加了,那 Redeploy 舊的 deployment 應該可以吧?

Redeploy 顯示無法重新部署

Vercel 直接告訴你:This deployment can not be redeployed. Please try again from a fresh commit. 被 block 的 deployment 不能 redeploy。

第四個嘗試:推空 commit

既然需要 fresh commit,請同事推了一個空 commit:

git commit --allow-empty -m "chore: trigger deploy"
git push

空 commit 還是被擋

新的 deployment 出現了,commit 是 10fa857 chore: trigger deploy,author 確實是 [email protected]

還是 Blocked。

到這裡我開始覺得不是 git 端的問題了。

回到 Vercel 官方文件

翻了 Vercel 的 Troubleshoot project collaboration 頁面,找到幾個關鍵資訊:

Hobby plan 不支援 private repo 的多人協作。 只有 project owner 的 commit 才能觸發部署。

先確認我們的 plan — 左上角顯示 Pro Trial,不是 Hobby。排除這個可能性。

確認是 Pro Trial

Pro team 的要求是:

  1. Contributors 的 Vercel 帳號必須連結 git provider(在 Account Settings → Login Connections)
  2. 檢查 team 的 collaboration settings 是 auto approve 還是 manual approve
  3. 如果是 manual approve,owner 需要手動核准

同事的 Vercel 帳號確實看得到 oberonlai's projects 這個 team,角色是 Member:

同事的 Teams 頁面

真正的問題:Login Connections

前面所有排查都指向同一個方向:Vercel 知道同事是 team member,但無法把 git commit 的 author 對應到他的 Vercel 帳號。

問題出在 Vercel Account Settings 的 Login Connections

Login Connections 設定頁面

同事雖然用 GitHub 帳號登入 Vercel,但 Login Connections 裡面的 GitHub 綁定狀態不正確。Vercel 需要透過這個綁定來建立「GitHub 帳號 ↔ Vercel 帳號」的對應關係。沒有這層對應,即使 commit email 一致、team member 也加了,Vercel 還是無法確認「這筆 commit 是我們 team 的人推的」。

請同事到 Account Settings → Login Connections 重新連結 GitHub 帳號後,再推一次 commit,部署就正常通過了。

排查過程的回顧

這次除錯花了大約一個小時,走過的路整理如下:

嘗試結果原因
修正 git commit email還是被擋email 只是必要條件,不是充分條件
確認 team member已是成員team membership 跟 commit 辨識是兩件事
Redeploy不允許blocked deployment 無法 redeploy
推空 commit還是被擋根本問題沒解決,新 commit 一樣被擋
檢查 planPro Trial排除 Hobby plan 限制
檢查 Login Connections未正確綁定根因找到

結論

Vercel 判斷 commit author 是否為 team member 的邏輯是這樣的:

  1. 從 git commit 取得 author email
  2. 透過 git provider(GitHub)找到對應的帳號
  3. 檢查這個帳號是否在 Vercel 的 Login Connections 中綁定了某個 Vercel 帳號
  4. 確認該 Vercel 帳號是否為 project 所屬 team 的成員

第三步是最容易被忽略的。「用 GitHub 登入 Vercel」和「在 Vercel 帳號的 Login Connections 綁定 GitHub」看起來像同一件事,但 Vercel 內部的處理可能不同。如果你遇到相同的錯誤訊息,建議直接從 Login Connections 開始檢查,能省下不少繞路的時間。

作品案例

看看我們打造的產品與專案。從 WordPress 外掛到 AI 客服方案,每一個作品都是實戰經驗的累積。

瀏覽作品案例

服務項目

WordPress 開發、WooCommerce 電商、LINE 整合、AI 解決方案,依據你的需求提供最適合的技術服務。

瀏覽服務項目

Contact

聯絡我們

若你有任何技術需求、專案諮詢或合作想法,歡迎隨時與我們聊聊(首次諮詢免費)。

  • 想打造 WordPress 網站或 WooCommerce 電商
  • 需要 LINE 整合或 AI 功能導入
  • 有產品點子想找技術合夥人一起實現
  • 既有網站需要改版升級或效能優化
  • 尋找長期穩定的技術顧問合作夥伴