SupabaseデータベースのフライウェイとGithubアクションの移行方法
オープンソース技術に完全に組み込まれている.Supabase GoogleのFirebaseへの今後の代替手段です.supabaseとfirebaseの間の1つの明確な違いは、彼らが持続し、データを管理する方法です.FireBaseはFireStoreを使用していますが、Webインターフェイスを介してのみ設定できるNoSQLドキュメントデータベースでは、Supabaseはフードの下にPostgresデータベースを使用します.
プロジェクトを設定すると、プロジェクトのデータベースにSQLステートメントをすばやく実行するために使用できるSQLコンソールを構築します.新しいプロジェクトで、それはいくつかをかき立てるために誘惑です
そして、あなたがsupabaseで実験しているならば、supabaseのSQLコンソールを使用してください.結局のところ、それは非常によく動作し、手ダウン、料理を得るための最速の方法です.しかし、あなたが生産の光を見るプロジェクトに取り組んでいるならば、あなたのデータベース・スキーマをより確実に移行するために、フライウェイのようなツールを使用することを考えてください.
この投稿では、変更がリポジトリにプッシュされるたびに、Supabaseデータベースに対するフライウェイ移行を実行するGithubアクションを設定します.これは、あなたのコードと一緒にマイグレーションを格納し、常にあなたのビジネスロジックを同期してデータベースを維持することができます.
あなたは、データベースのホスト、ポート、ユーザ名、パスワード、およびデータベース名をフライウェイを実行する必要があります.Supabaseでは、“設定”と“データベースをクリックして、この情報を見つけることができます.”
データベースの設定ページでは、必要なすべての情報を“接続情報”というタイトルのボックスを見つけるでしょう.セキュリティ上の理由から、データベースのパスワードはここには記載されていません.プロジェクトを作成すると、supabaseが入力します.
フライウェイの移行はSQLファイルに過ぎません.移行はデータベーススキーマをバージョン管理するために使用されますので、これらのファイルは特定の命名規則を遵守しなければなりません.フライウェイは素晴らしい入門書を持っていますnaming SQL-based migrations .
我々の目的のために
ファイルを作成しましょう
我々が変化を変えるときはいつでも
リポジトリでは、
このジョブはまずリポジトリをチェックし、
データベースのパスワードは秘密ですのでencrypted secret アクセスするには:
すべてをコミットし、変更をリポジトリにプッシュします.ワークフローが実行されると、データベーススキーマが更新され、新しい
なぜ私はフライウェイを使用する必要がありますか? データベーススキーマへの変更は繰り返し可能になります.これは、新しい環境を設定するときに便利です. データベーススキーマは、アプリケーションと一緒に進化します. どのようにあなたのデータベースのように見えるコードは、それとの相互作用がある. 私たちのしたこと Supabase UIのデータベース設定ページからデータベース接続情報を取得します. 単純な滑走路のSQL移行を作成 1つの仕事と呼ばれるgithubワークフローを加えました
プロジェクトを設定すると、プロジェクトのデータベースにSQLステートメントをすばやく実行するために使用できるSQLコンソールを構築します.新しいプロジェクトで、それはいくつかをかき立てるために誘惑です
CREATE TABLE
ステートメントとそれを持っている.そして、あなたがsupabaseで実験しているならば、supabaseのSQLコンソールを使用してください.結局のところ、それは非常によく動作し、手ダウン、料理を得るための最速の方法です.しかし、あなたが生産の光を見るプロジェクトに取り組んでいるならば、あなたのデータベース・スキーマをより確実に移行するために、フライウェイのようなツールを使用することを考えてください.
この投稿では、変更がリポジトリにプッシュされるたびに、Supabaseデータベースに対するフライウェイ移行を実行するGithubアクションを設定します.これは、あなたのコードと一緒にマイグレーションを格納し、常にあなたのビジネスロジックを同期してデータベースを維持することができます.
データベース接続情報の検索
あなたは、データベースのホスト、ポート、ユーザ名、パスワード、およびデータベース名をフライウェイを実行する必要があります.Supabaseでは、“設定”と“データベースをクリックして、この情報を見つけることができます.”
データベースの設定ページでは、必要なすべての情報を“接続情報”というタイトルのボックスを見つけるでしょう.セキュリティ上の理由から、データベースのパスワードはここには記載されていません.プロジェクトを作成すると、supabaseが入力します.
単純なフライウェイの移行
フライウェイの移行はSQLファイルに過ぎません.移行はデータベーススキーマをバージョン管理するために使用されますので、これらのファイルは特定の命名規則を遵守しなければなりません.フライウェイは素晴らしい入門書を持っていますnaming SQL-based migrations .
我々の目的のために
profile
3列の表:user_id
登録ユーザーのIDの参照username
, and email
.ファイルを作成しましょう
V1__create_table_profile.sql
ディレクトリにmigrations
. The migrations
ディレクトリはリポジトリのルートディレクトリに置かれます.-- migrations/V1__create_table_profile.sql
CREATE TABLE public.profile (
user_id uuid REFERENCES auth.users NOT NULL PRIMARY KEY,
username TEXT NULL,
email TEXT NULL
);
これらの移行の場所を変更したい場合は、以下のようにGithubワークフローの設定を変更してください.フライウェイを走らせるためにGithubアクションを書く
我々が変化を変えるときはいつでも
migrations
ディレクトリは、私たちは私たちのsupabaseデータベースに対してそれらを実行するgithubアクションをします.リポジトリでは、
.github/workflows/migrate.yml
次のコンテンツを使用します.name: 'Migrate database schema'
on:
push:
branches:
- main
jobs:
migrate-database:
name: Run Flyway migrations
runs-on: ubuntu-20.04
env:
SUPABASE_HOST: db.YOUR_SUPABASE_DATABASE_HOST.supabase.co
SUPABASE_PORT: 5432
SUPABASE_USER: postgres
SUPABASE_DB: postgres
steps:
- uses: actions/checkout@v2
- run: >-
docker run --rm
--volume ${{ github.workspace }}/migrations:/flyway/sql:ro
flyway/flyway:7.12.1-alpine
-url="jdbc:postgresql://${{ env.SUPABASE_HOST }}:${{ env.SUPABASE_PORT }}/${{ env.SUPABASE_DB }}?sslmode=require"
-user="${{ env.SUPABASE_USER }}"
-password="${{ secrets.SUPABASE_PASS }}"
migrate
最初の行はワークフローの名前を定義します.name: 'Migrate database schema'
次に、このワークフローをトリガーするイベントを定義します.ここでは、ワークフローはmain
:on:
push:
branches:
- main
仕事migrate-database
つの環境変数を定義しますSUPABASE_HOST
, SUPABASE_PORT
, SUPABASE_USER
, SUPABASE_DB
. あなたがsupabaseのデータベース設定ページで見つけた接続情報に従ってそれらを変えるようにしてください.このジョブはまずリポジトリをチェックし、
docker
コマンド.このコマンドはflyway:flyway
マウントするイメージmigrations
コンテナにディレクトリを移動し、環境変数を介して設定されたデータベースに対して移行を実行します.データベースのパスワードは秘密ですのでencrypted secret アクセスするには:
-password="${{ secrets.SUPABASE_PASS }}"
秘密を作成してくださいSUPABASE_PASS
リポジトリの設定でデータベースのパスワードを格納します.すべてをコミットし、変更をリポジトリにプッシュします.ワークフローが実行されると、データベーススキーマが更新され、新しい
profile
データベース内の表.回収する
なぜ私はフライウェイを使用する必要がありますか?
migrations/V1__create_table_profile.sql
, はprofile
表.migrate-database
これは、フライウェイを使用して、すべての移行を実行するmigrations
Supabaseデータベースに対するディレクトリ.Reference
この問題について(SupabaseデータベースのフライウェイとGithubアクションの移行方法), 我々は、より多くの情報をここで見つけました https://dev.to/sruhleder/how-to-migrate-supabase-databases-with-flyway-github-actions-2aniテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol