feat(orquestra): enforce semver and conventional commits

This commit is contained in:
Deploy
2026-08-25 22:03:50 +02:00
parent 66a08b61d2
commit 3917c8d6de
10 changed files with 483 additions and 19 deletions

55
docs/deployment.md Normal file
View File

@@ -0,0 +1,55 @@
# Deploy del monolito MercadoDeVida
## ¿Basta con copiar `project/`?
Sí, para levantar el monolito en un host basta con traer la carpeta `project/` completa y ejecutar:
```bash
cd project
./scripts/monolith.sh prod start
```
o, para reemplazar una versión anterior ya corriendo:
```bash
cd project
./scripts/monolith.sh prod restart
```
## Qué hace `monolith.sh prod start/restart`
1. Limpia procesos antiguos del proyecto y listeners en puertos gestionados.
2. Arranca PostgreSQL y Redis con Docker Compose.
3. Instala dependencias con `npm ci` en backend, admin, TPV, frontend y storefront.
4. Ejecuta migraciones.
5. Compila backend y frontends.
6. Arranca servicios con `nohup` y guarda PID/logs en `project/.runtime/prod/`.
7. Verifica HTTP para cada servicio.
Servicios por defecto:
| Servicio | Puerto |
|---|---:|
| Backend API | 3000 |
| Admin | 3001 |
| TPV | 3002 |
| Frontend | 3003 |
| Storefront SEO | 3004 |
## Requisitos del host
- Node.js >= 22
- npm
- Docker + Docker Compose
- Bash, curl, lsof
- Variables/secretos en `project/.env`
Si no existe `.env`, el script crea uno de desarrollo. En producción real conviene crear `.env` explícito antes de arrancar.
## Lo que NO gestiona
- Traefik/Nginx/Authelia o certificados TLS.
- Arranque automático tras reinicio del host.
- Backups de base de datos.
Para producción estable conviene envolver `./scripts/monolith.sh prod restart` con systemd, supervisor o el orquestador elegido.

83
docs/versioning.md Normal file
View File

@@ -0,0 +1,83 @@
# Versionado semántico y Conventional Commits
## Fuente de verdad
La versión del producto vive en:
```txt
project/VERSION
```
Los `package.json` del monolito deben mantenerse sincronizados con ese valor.
## Conventional Commits obligatorios
Formato:
```txt
<type>[optional scope][!]: <description>
```
Tipos permitidos:
- `feat`
- `fix`
- `docs`
- `chore`
- `refactor`
- `perf`
- `test`
- `build`
- `ci`
- `style`
- `revert`
Ejemplos:
```txt
feat(orders): add awaiting-payment notifications
fix(monolith): clean stale deployments before start
chore(release): v0.2.0
```
## Herramientas Orquestra
Validar un mensaje:
```bash
python3 scripts/validate_conventional_commit.py --message "fix(monolith): clean stale deployments"
```
Instalar hook local de Git:
```bash
./scripts/install_git_hooks.sh
```
Bump semver:
```bash
python3 scripts/version.py bump patch
python3 scripts/version.py bump minor --commit --tag
python3 scripts/version.py bump major --commit --tag
```
Ver versión actual:
```bash
python3 scripts/version.py show
```
## Cierre de features
`scripts/commit_feature.sh` genera commits convencionales automáticamente usando el tipo del ticket:
- `feature``feat(...)`
- `fix` / `bug``fix(...)`
- `chore``chore(...)`
`verify.sh` valida:
- `project/VERSION` como semver.
- `package.json` sincronizados.
- último commit compatible con Conventional Commits.