Supabase
Supabase DB 마이그레이션, Edge Functions 배포
collabops/supabase-migration@v1
On-Premise: ❌ — Supabase SaaS 연결 필요
Supabase DB 마이그레이션을 실행합니다. 스키마 검증(lint) 후 마이그레이션을 적용합니다.
| Input | Required | Default | Description |
|---|---|---|---|
access-token | YES | - | Supabase Access Token. $\{\{ secrets.SUPABASE_ACCESS_TOKEN \}\} 권장 |
project-ref | YES | - | Supabase 프로젝트 참조 ID |
db-password | YES | - | Supabase DB 비밀번호. $\{\{ secrets.SUPABASE_DB_PASSWORD \}\} 권장 |
lint-level | NO | "warning" | 린트 실패 기준 (none, warning, error) |
dry-run | NO | "false" | 미리보기 (적용 없이 확인만) |
예시
기본 — staging 환경 마이그레이션
jobs:
migrate:
steps:
- name: checkout
uses: "collabops/checkout@v2"
with:
repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
- name: supabase-migrate
uses: "collabops/supabase-migration@v1"
with:
access-token: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
project-ref: ${{ secrets.SUPABASE_PROJECT_REF_STAGING }}
db-password: ${{ secrets.SUPABASE_DB_PASSWORD_STAGING }}
PR 검증 — dry-run + error 수준
# Change Request 트리거 — supabase/migrations/ 변경에만 동작.
triggers:
change_request:
branches: [main]
paths: ["supabase/migrations/**"]
jobs:
migrate-preview:
steps:
- name: checkout
uses: "collabops/checkout@v2"
with:
repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
- name: supabase-dry-run
uses: "collabops/supabase-migration@v1"
with:
access-token: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
project-ref: ${{ secrets.SUPABASE_PROJECT_REF_STAGING }}
db-password: ${{ secrets.SUPABASE_DB_PASSWORD_STAGING }}
# error 만 차단 — warning 으로는 PR 막지 않음.
lint-level: error
# 실제 적용하지 않고 검증만 수행.
dry-run: "true"
포인트 — 환경(prod/staging) 마다 project-ref + db-password 를 별도 secret 으로 관리. PR 단계에서는 dry-run: "true" 로 lint + plan 만 — 실제 적용은 main 머지 후 별도 Job. lint-level 은 warning|error — 어느 수준에서 PR 을 막을지 사전 합의.
collabops/supabase-functions-deploy@v1
On-Premise: ❌ — Supabase SaaS 연결 필요
Supabase Edge Functions를 배포합니다. 특정 함수 또는 전체 함수를 배포할 수 있습니다.
| Input | Required | Default | Description |
|---|---|---|---|
access-token | YES | - | Supabase Access Token. $\{\{ secrets.SUPABASE_ACCESS_TOKEN \}\} 권장 |
project-ref | YES | - | Supabase 프로젝트 참조 ID |
function-name | NO | "" | 배포할 함수 이름 (미지정 시 전체 배포) |
예시
전체 Edge Functions 배포
jobs:
deploy-functions:
steps:
- name: checkout
uses: "collabops/checkout@v2"
with:
repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
# function-name 미지정 → supabase/functions/ 아래 전체 배포.
- name: deploy-edge-functions
uses: "collabops/supabase-functions-deploy@v1"
with:
access-token: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
project-ref: ${{ secrets.SUPABASE_PROJECT_REF_PROD }}
특정 함수만 부분 배포
jobs:
deploy-one:
steps:
- name: checkout
uses: "collabops/checkout@v2"
with:
repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
- name: deploy-single-fn
uses: "collabops/supabase-functions-deploy@v1"
with:
access-token: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
project-ref: ${{ secrets.SUPABASE_PROJECT_REF_PROD }}
# 핫픽스 등 단일 함수만 빠르게 배포할 때.
function-name: send-webhook
포인트 — function-name 생략 시 supabase/functions/ 전체가 배포 대상. 환경 변수는 함수별 secret 으로 별도 관리 — 본 템플릿에서는 다루지 않음. 큰 변경은 위 마이그레이션 흐름과 분리해 별도 Job 으로 두는 것이 안전.