はじめに
Supabaseでテスト用のユーザーデータを扱っていると、
「古いデータを毎回手動で消すのが面倒だな…」と思ったことはありませんか?
そこで今回は、GitHub Actions と ts-node を使って、
毎朝6時に「前日のユーザー情報を自動削除」する仕組みを作りました。
この仕組みを作る中で学んだのは、Supabaseの操作をスクリプトから実行する方法、GitHub Actionsの自動スケジュール(cron)設定、Secretsを使った安全なキー管理でした。
学んだこと
- Supabaseはスクリプトからも簡単に操作できる
createClient() で接続し、.from('table').delete() で簡単にデータ操作が可能。
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(process.env.URL!, process.env.KEY!)
await supabase
.from('users')
.delete()
.lt('created_at', `${yesterday}T23:59:59`)
2.GitHub Actionsで毎朝6時に自動実行できる
on.schedule.cron を使えば、毎日決まった時間にジョブを動かせる。
日本時間6時は、UTCだと21:00に設定。
on:
schedule:
- cron: "0 21 * * *" # JST 6:00
3.Secretsでキーを安全に扱う
SupabaseのURLとAPIキーをGitHub Secretsに登録して、
env: に渡すことで安全に環境変数として利用できる。
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
- テストはまず手動実行で確認
workflow_dispatch を入れておけば、cronを待たずに「Run workflow」ボタンからすぐ実行テストできる。
まとめ
Supabaseのデータ削除はSDKで簡単にスクリプト化できる
GitHub Actionsを使えば、毎日自動実行が可能
Secretsを活用すれば、安全にAPIキーを管理できる
自動化すると「手動で消す時間」や「ミスのリスク」がなくなる