本地開發完成排隊系統後,下一步就是將整個系統部署到雲端環境。如何將本地的 Supabase CLI 設定部署到雲端,並介紹自動化部署流程。
http://127.0.0.1:54321
seed.sql
建立的測試資料https://your-project.supabase.co
abcdefghijklmnop
https://abcdefghijklmnop.supabase.co
為了讓 GitHub Actions 能夠存取您的 Supabase 專案,需要建立 Access Token:
GitHub Actions Deploy
)首先,將本地專案連結到雲端專案:
# 登入 Supabase CLI
supabase login
# 連結到雲端專案
supabase link --project-ref your-project-reference-id
將本地的資料庫結構部署到雲端:
# 檢查要部署的遷移檔案
supabase db diff
# 部署所有遷移檔案到雲端
supabase db push
將本地的 Edge Functions 部署到雲端:
# 部署所有 Edge Functions
supabase functions deploy
# 或者部署特定的 Function
supabase functions deploy hello-world
CI(持續整合) 和 CD(持續部署) :
/.github/workflows/ci.yml
name: CI
on:
push: # 當分支有新的 commit 時觸發
jobs:
# 測試 Edge Functions
edge-functions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 下載程式碼
- uses: denoland/setup-deno@v2 # 安裝 Deno 環境
- name: Test Edge Functions # 執行測試
run: deno test --allow-all supabase/functions/hello-world/index.test.ts
# 驗證 Supabase 設定檔
supabase-validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 下載程式碼
- uses: supabase/setup-cli@v1 # 安裝 Supabase CLI
- name: Validate Supabase config file # 檢查設定檔是否正確
run: |
if [ -f "supabase/config.toml" ]; then
echo "Supabase config.toml exists"
else
echo "Error: supabase/config.toml not found"
exit 1
fi
/.github/workflows/cd.yml
name: CD
on:
pull_request: # 當有人提交 Pull Request 時觸發
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 1. 準備環境
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Supabase CLI
uses: supabase/setup-cli@v1
# 2. 檢查必要的環境變數
- name: Verify environment variables
run: |
if [ -z "${{ secrets.STAGING_PROJECT_ID }}" ]; then
echo "STAGING_PROJECT_ID is not set"
exit 1
fi
# 3. 測試部署
- name: Test migration (dry-run)
run: |
supabase db push --db-url "${{ secrets.STAGING_DATABASE_URL }}" --dry-run
# 4. 實際部署資料庫遷移
- name: Apply migrations
run: |
supabase db push --db-url "${{ secrets.STAGING_DATABASE_URL }}"
# 5. 部署 Edge Functions
- name: Deploy Edge Functions
run: |
supabase functions deploy --project-ref ${{ secrets.STAGING_PROJECT_ID }}
# 6. 驗證部署結果
- name: Verify deployment
run: |
supabase projects list
echo "Deployment completed successfully!"
GitHub Secrets 是一個安全的方式來儲存敏感資訊,例如:
這些資訊會被加密儲存,只有 GitHub Actions 可以存取。
前往您的 GitHub 專案頁面:
需要設定的 Secrets:
SUPABASE_ACCESS_TOKEN
# 步驟 2.2 取得的 Access Token
STAGING_PROJECT_ID
# Supabase 專案 Reference ID
STAGING_DATABASE_URL
# 格式:postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres
# 可在 Supabase Dashboard > Database > Settings > Database password
在本地修改程式碼後,提交到遠端 dev
分支,並建立 Pull Request 到 main
分支。
前往 GitHub 專案頁面,點擊「Actions」標籤,查看 CI/CD 工作流程的執行情況。確保所有步驟都成功完成
在 Supabase Dashboard 中檢查:
Zeabur 是一個簡單易用的雲端部署平台,可以快速將 Supabase 專案或前後端專案,部署到雲端。
在 Zeabur 專案設定中,新增以下環境變數:
SUPABASE_URL
:您的 Supabase 專案 URLSUPABASE_ANON_KEY
:您的 Supabase anon keyRESEND_API_KEY
:您的 Resend API Key可以透過 Zeabur 提供的網址訪問應用程式,例如:https://queuingpenguins.zeabur.app/
現在已經完成部署流程的設定可以透過 GitHub Actions 自動化部署到雲端 Supabase 專案。每次提交程式碼後,系統都會自動測試並部署最新版本。
... to be continued
有任何想討論歡迎留言,或需要指正的地方請鞭大力一點,歡迎訂閱、按讚加分享,分享給想要提升開發效率的朋友