Skip to content

Version 1.0.0 Release #1

Version 1.0.0 Release

Version 1.0.0 Release #1

name: Supabase Remote Migrations
on:
workflow_dispatch:
pull_request:
paths:
- ".github/workflows/supabase-deploy.yml"
- "supabase/**"
push:
branches:
- main
paths:
- ".github/workflows/supabase-deploy.yml"
- "supabase/**"
permissions:
contents: read
concurrency:
group: supabase-remote-migrations
cancel-in-progress: false
jobs:
remote-migrations:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Detect Supabase configuration
id: config
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_DB_PASSWORD }}
SUPABASE_PROJECT_ID: ${{ vars.SUPABASE_PROJECT_ID }}
run: |
if [ -z "$SUPABASE_ACCESS_TOKEN" ] || [ -z "$SUPABASE_DB_PASSWORD" ] || [ -z "$SUPABASE_PROJECT_ID" ]; then
echo "configured=false" >> "$GITHUB_OUTPUT"
echo "Supabase remote migrations are disabled until repo vars and secrets are set."
else
echo "configured=true" >> "$GITHUB_OUTPUT"
fi
- name: Setup Supabase CLI
if: steps.config.outputs.configured == 'true'
uses: supabase/setup-cli@v1
with:
version: latest
- name: Link Supabase project
if: steps.config.outputs.configured == 'true'
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_DB_PASSWORD }}
SUPABASE_PROJECT_ID: ${{ vars.SUPABASE_PROJECT_ID }}
run: >
supabase link
--project-ref "$SUPABASE_PROJECT_ID"
--password "$SUPABASE_DB_PASSWORD"
--yes
- name: List linked migrations
if: steps.config.outputs.configured == 'true'
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
run: supabase migration list --linked
- name: Dry-run remote migrations
if: github.event_name == 'pull_request' && steps.config.outputs.configured == 'true'
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_DB_PASSWORD }}
run: supabase db push --linked --dry-run --yes
- name: Apply remote migrations
if: github.event_name != 'pull_request' && steps.config.outputs.configured == 'true'
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_DB_PASSWORD }}
run: supabase db push --linked --yes