feat(orquestra): enforce semver and conventional commits
This commit is contained in:
55
docs/deployment.md
Normal file
55
docs/deployment.md
Normal 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
83
docs/versioning.md
Normal 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.
|
||||
Reference in New Issue
Block a user