The direct connection host (db.<ref>.supabase.co) only has an IPv6 address. Your laptop has IPv6, GitHub-hosted runners don't. That address in brackets in the error is the giveaway.
Use the session pooler connection string instead (host aws-0-<region>.pooler.supabase.com, port 5432, user postgres.<ref>). It's IPv4 and session mode is fine for migrations. Or use the IPv4 add-on if you really need the direct connection.
- run: supabase db push --db-url "$SUPABASE_DB_URL"
env:
SUPABASE_DB_URL: ${{ secrets.SUPABASE_SESSION_POOLER_URL }}