CI/CD, Vercel y Supabase
GitHub Actions en cada PR, Vercel para el hosting, Supabase CLI para todo lo relativo a base de datos y Auth.
Flujo habitual de una funcionalidad
Rama y PR
Implementar, verificar en local (typecheck, lint, format, tests,
build), commit, push, gh pr create.
CI en GitHub Actions
Lint/tipos/tests unitarios, tests de RLS (pgTAP), auditoría de dependencias, escaneo de secretos, build + Playwright, y el propio deploy de preview de Vercel.
Merge
gh pr merge --squash --delete-branch, con todos los
checks en verde.
Migración a producción
npx supabase db push --linked --include-all —
manual, el CI no lo hace solo. El flag
--include-all hace falta a menudo porque las marcas
de tiempo de las migraciones de ramas paralelas no siempre
quedan en orden cronológico estricto.
Deploy de producción
Normalmente automático al fusionar a main vía la
integración de Vercel con GitHub. Cuando falla o se queda en
cola, redeploy manual con npx vercel --prod --yes.
db push --linked a
mano.
Configuración de Supabase Auth: supabase config push
supabase/config.toml declara el Send Email Hook, las
URLs de redirección permitidas, etc. — pero esto
no se sincroniza con el proyecto en la nube automáticamente,
a diferencia de las migraciones SQL. Hace falta ejecutar
explícitamente:
npx supabase config push
Esto empuja todo el archivo (no solo Auth), no tiene modo de
vista previa (--dry-run) en la versión actual de la
CLI. El 19/09/2026 se descubrió que este comando nunca se había
ejecutado desde que se activó el Send Email Hook — el secreto
configurado en Supabase llevaba tiempo desincronizado del real.
Detalle completo en
Incidencias resueltas.
Vercel: cosas a tener en cuenta
- Los deployments de preview están protegidos por login de Vercel — no se pueden inspeccionar sin autenticarse en ese panel.
- Cambiar una variable de entorno en Vercel no afecta a una función ya desplegada: hace falta un redeploy nuevo para que la recoja.
-
El plan usado limita a 1 build a la vez por cuenta — si
algo se queda "Queued" mucho más de lo normal (varios minutos sin
pasar a "Building"), suele ser un despliegue anterior atascado
bloqueando la cola; cancelarlo con
vercel remove <url>suele destrabarlo. -
El runtime de las funciones corre en UTC, no en hora de
España — cualquier fecha formateada en servidor sin especificar
timeZone: "Europe/Madrid"se ve con 1-2 horas de menos.