在團隊開發中,經常面臨一個兩難:既要快速迭代新功能,又要確保正式環境的穩定性。而 Supabase Branching 功能就是為了解決這個問題而生,讓你的團隊能夠像使用 Git 分支一樣,輕鬆管理不同的資料庫環境。
Supabase Branching 允許開發者為每個功能開發、錯誤修復或實驗性變更創建獨立的資料庫環境。每個分支都包含完整的 Supabase 堆疊副本,包括資料庫、API、身份驗證和儲存服務,讓團隊能夠在隔離的環境中進行開發和測試。
想像你正在寫一本書,而這本書就是你的應用程式。傳統的開發方式就像是所有作者都在同一份原稿上修改,很容易造成混亂。而 Supabase Branching 就像是給每個作者一份獨立的草稿副本,他們可以在自己的副本上自由創作、實驗,完成後再將好的內容合併回主要版本。這樣既不會影響原稿,也能讓每個人都能發揮創意。
在傳統的開發流程中,團隊經常面臨以下挑戰:
在開始使用 Supabase Branching 之前,你需要確保你的專案已經正確設定了 Git 版本控制。
# 初始化 Supabase CLI
supabase init
# 連結到 Supabase 專案
supabase link --project-ref YOUR_PROJECT_ID
# 確保本地環境與遠端同步
supabase db pull
# 確保你的專案已經初始化 Git
git init
git add .
git commit -m "Initial commit"
啟用 Branching 功能非常簡單,只需要在 Supabase 控制台中進行設定。
啟用 Branching 後,你的主要專案會成為「production」分支,所有新的分支都會基於這個分支創建。
Branching 功能可能會產生額外的費用,請查看你的方案限制
當你啟用 Branching 後,每當你在 GitHub 上開啟 Pull Request 時,Supabase 會自動為該 PR 創建一個預覽分支。
推送程式碼:將你的功能分支推送到 GitHub
git checkout -b feature/user-profile
# 進行你的開發工作
git add .
git commit -m "Add user profile feature"
git push origin feature/user-profile
開啟 Pull Request:在 GitHub 上開啟 Pull Request
自動創建分支:Supabase 會自動檢測到新的 PR,並創建對應的預覽分支
獲取分支資訊:在 PR 的評論中,你會看到 Supabase 機器人提供的分支資訊
每個 PR 分支都會有獨立的 URL 和 API 金鑰,你可以使用這些資訊來測試你的應用程式。
分支會繼承主分支的資料庫結構,但不會包含生產資料。
在使用 Branching 時,資料庫遷移的管理變得更加重要。以下是一些最佳實踐來避免遷移失敗。
1. 向後相容的遷移
-- 好的做法:新增欄位時設定預設值
ALTER TABLE users ADD COLUMN avatar_url TEXT DEFAULT '';
-- 避免:沒有預設值的必填欄位
ALTER TABLE users ADD COLUMN avatar_url TEXT NOT NULL;
2. 分階段進行破壞性變更
-- 第一階段:新增新欄位
ALTER TABLE users ADD COLUMN new_email TEXT;
-- 第二階段:遷移資料
UPDATE users SET new_email = email;
-- 第三階段:移除舊欄位(在確認無問題後)
ALTER TABLE users DROP COLUMN email;
3. 使用交易確保一致性
BEGIN;
-- 你的遷移操作
ALTER TABLE posts ADD COLUMN status TEXT DEFAULT 'draft';
UPDATE posts SET status = 'published' WHERE published = true;
COMMIT;
1. 分支特定的環境變數
# 為特定分支設定環境變數
supabase secrets set --branch my-feature-branch API_KEY=your_api_key
# 列出分支的所有環境變數
supabase secrets list --branch my-feature-branch
2. 繼承主分支的設定
# 從主分支複製環境變數
supabase secrets copy --from production --to my-feature-branch
dotenvx 可以幫助你管理不同環境的環境變數。
# 安裝 dotenvx
npm install -g @dotenvx/dotenvx --save
# 主分支環境變數
.env.production
# 開發分支環境變數
.env.development
# 功能分支環境變數
.env.feature
# 根據當前 Git 分支自動載入對應的環境變數
dotenvx run -f .env.$(git branch --show-current) -- npm run dev
# 1. 創建功能分支
git checkout -b feature/user-notifications
# 2. 進行開發工作
# 編寫程式碼、建立遷移檔案等
# 3. 測試功能
npm run test
# 4. 開啟 Pull Request
git push origin feature/user-notifications
# 在 GitHub 上開啟 PR
# 5. 程式碼審查和測試
# 團隊成員可以使用 PR 分支進行測試
# 6. 合併到主分支
# PR 被批准後合併,分支自動清理
# 1. 創建修復分支
git checkout -b hotfix/login-bug
# 2. 修復問題
# 進行必要的程式碼修改
# 3. 驗證修復
# 在分支環境中測試修復效果
# 4. 快速部署
# 修復確認後快速合併到主分支
Supabase Branching 透過為每個功能、每個 Pull Request 提供獨立的環境,團隊可以更加自信地進行創新和實驗。
... to be continued
有任何想討論歡迎留言,或需要指正的地方請鞭大力一點,歡迎訂閱、按讚加分享,分享給想要提升開發效率的朋友~