Entornos y despliegue
Variables de entorno
| Archivo | Uso | Comentario |
|---|---|---|
.env.development |
Desarrollo local | Usar ENVIRONMENT=development, base local, API_CACHE_TTL_SECONDS=30. |
.env.production |
Producción (VPS) | ENVIRONMENT=production, credenciales reales, TTL ≥ 120. |
Ejemplo .env.development:
ENVIRONMENT=development
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/epdatos
SECRET_KEY=dev-secret
APP_HOST=127.0.0.1
APP_PORT=8107
API_CACHE_TTL_SECONDS=30
SENTRY_DSN=
SENTRY_TRACES_SAMPLE_RATE=0.0
SENTRY_PROFILES_SAMPLE_RATE=0.0
Ejemplo .env.production (en el VPS):
ENVIRONMENT=production
DATABASE_URL=postgresql://illanes00-ep:<password>@127.0.0.1:5432/epdatos
SECRET_KEY=<openssl rand -hex 32>
APP_HOST=127.0.0.1
APP_PORT=8107
API_CACHE_TTL_SECONDS=120
SENTRY_DSN=https://<public>@oXXXX.ingest.sentry.io/<project>
SENTRY_TRACES_SAMPLE_RATE=0.1
SENTRY_PROFILES_SAMPLE_RATE=0.0
Ramas Git
main: producción.staging: staging (mirror demain, pruebas antes de release).feat/*: ramas feature → PR obligatoria haciastagingomain.
Flujo de despliegue (CI/CD)
Merge en
maindesencadena workflow:- Lint (
black,prettier,ruff,flake8,pre-commit). - Tests (
unit,data,api,ui,e2e). - Smoke (
curl /healthz,/api/<ver>/health,/api/<ver>/hello).
- Lint (
Job de deploy (pendiente de credenciales) ejecuta en VPS:
git pull origin main make migrate make seed_min sudo systemctl restart illanes00-ep scripts/post_deploy_checks.sh
Dos entornos separados
- Dev local: iniciar Postgres (docker/host), usar
.env.development, corrermake dev. - Producción: servicio systemd (
/etc/systemd/system/illanes00-ep.service) cargando.env(produc.).
Opcionalmente se pueden crear subdirectorios para overrides:
config/
├── development/.env.sample
└── production/.env.sample
Ambos entornos comparten el mismo repo; diferencia radica en .env y credenciales.