Github Actions と Supabase CLI でスキーマをデプロイ
に公開Supabase CLI でマイグレーションを管理していることを前提としています。
Prisma などを使用している場合は対象外です。
Supabase の準備
Github Actions からデプロイするためには、Project Reference ID と DB のパスワード、アクセストークンが必要です。
アクセスキーの払い出し
Supabase ダッシュボードトップ > サイドメニューの Access Tokens
のページで Generate new token
をクリックしてアクセストークンを生成する。
Project Reference ID
Supabase のダッシュボードトップ > 対象のプロジェクト > サイドメニューの Project Settings(歯車アイコン)> General
のページで Reference ID をコピーする。
DB パスワード
パスワードはどこかに保管してあると思うのでそれを使用する。
忘れた場合は Supabase のダッシュボードトップ > 対象のプロジェクト > サイドメニューの Project Settings(歯車アイコン)> Database
のページで Reset database password
をクリックしてパスワードをリセットする。
Github Actions Secrets の準備
リポジトリの Settings > Secrets and variables > Actions
のページで New repository secret
をクリックして新しいシークレットを登録する。
- SUPABASE_ACCESS_TOKEN:アクセストークン
- SUPABASE_PROJECT_ID:Project Reference ID
- SUPABASE_PASSWORD:DB パスワード
ワークフローの作成
.github > workflows > db-migration.yml を作成する。
main に push されるときに、マイグレーションファイルに変更があれば実行。
手動で実行したいこともあるので workflow_dispatch も指定。
name: DB マイグレーション
on:
push:
branches: [main]
paths:
- supabase/migrations/**
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
db-migration:
timeout-minutes: 2
runs-on: ubuntu-latest
env:
SUPABASE_PROJECT_ID: ${{ secrets.SUPABASE_PROJECT_ID }}
SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_PASSWORD }}
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
steps:
- name: チェックアウト
uses: actions/checkout@v4
- name: Supabase CLI セットアップ
uses: supabase/setup-cli@v1
- name: Supabase Link
run: supabase link --project-ref $SUPABASE_PROJECT_ID
- name: マイグレーション
run: supabase db push