setup-cli
setup-cli copied to clipboard
A GitHub action for interacting with your Supabase projects using the CLI.
:gear: Supabase CLI Action
About
This action sets up the Supabase CLI, supabase, on GitHub's hosted Actions runners. Other CI runners like BitBucket and GitLab are supported via their respective pipelines.
This action can be run on ubuntu-latest, windows-latest, and macos-latest GitHub Actions runners, and will install and expose a specified version of the supabase CLI on the runner environment.
Usage
Setup the supabase CLI:
steps:
- uses: supabase/setup-cli@v1
A specific version of the supabase CLI can be installed:
steps:
- uses: supabase/setup-cli@v1
with:
version: 1.178.2
Run supabase db start to execute all migrations on a fresh database:
steps:
- uses: supabase/setup-cli@v1
with:
version: latest
- run: supabase init
- run: supabase db start
Since Supabase CLI relies on Docker Engine API, additional setup may be required on Windows and macOS runners.
Inputs
The actions supports the following inputs:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
version |
String | Supabase CLI version (or latest) |
1.178.2 |
false |
Advanced Usage
Check generated TypeScript types are up-to-date with Postgres schema:
steps:
- uses: supabase/setup-cli@v1
- run: supabase init
- run: supabase db start
- name: Verify generated types match Postgres schema
run: |
supabase gen types typescript --local > schema.gen.ts
if ! git diff --ignore-space-at-eol --exit-code --quiet schema.gen.ts; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
Release job to push schema changes to a Supabase project:
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
# Retrieve <project-id> from dashboard url: https://app.supabase.com/project/<project-id>
PROJECT_ID: <project-id>
steps:
- uses: supabase/setup-cli@v1
- run: supabase link --project-ref $PROJECT_ID
- run: supabase db push
Develop
Requires
node >= 16
Install the dependencies
$ npm install
Build the typescript and package it for distribution
$ npm run build && npm run package
Run the tests :heavy_check_mark:
$ npm test
PASS __tests__/main.test.ts
✓ gets download url to binary (3 ms)
✓ test runs (891 ms)
...
Publish to a distribution branch
Actions are run from GitHub repos so we will checkin the packed dist folder.
- Create a new GitHub release
- Rebase
v1branch onmain
Your action is now published! :rocket:
See the versioning documentation
Validate
You can now validate the action by referencing ./ in a workflow in your repo (see test.yml)
uses: ./
with:
version: latest
See the actions tab for runs of this action! :rocket: