Estrategia de CI/CD y Despliegues
Yuruary adopta una filosofía de Continuous Deployment (Despliegue Continuo) para minimizar el error humano y acelerar la entrega de valor. El objetivo es que la creación de un tag de versión en Git dispare automáticamente todo el proceso de construcción, pruebas y distribución.
1. Estrategia Web Portal (Residentes)
El Portal Web es una aplicación estática (SPA), por lo que utilizamos una arquitectura Serverless de bajo costo y alto rendimiento.
- Arquitectura: Hosting Estático.
- Recursos AWS:
- S3 (Simple Storage Service): Bucket configurado para alojamiento de sitios web estáticos (Público).
- CloudFront: CDN que distribuye el contenido globalmente y provee el certificado SSL/TLS (HTTPS).
- Pipeline de Despliegue:
Al detectar un tag
v*.*.*:- Install:
npm ci(Instalación limpia de dependencias). - Build:
npm run build(Genera los archivos estáticos en/dist). - Sync:
aws s3 sync ./dist s3://yuruary-web-portal --delete(Sube cambios y borra archivos viejos). - Invalidate:
aws cloudfront create-invalidation(Limpia la caché del CDN para que los usuarios vean los cambios de inmediato).
- Install:
2. Estrategia Desktop App (Staff Yuruary)
El cliente de escritorio requiere una estrategia diferente basada en actualizaciones Over-The-Air (OTA).
- Arquitectura: Binarios firmados distribuidos vía internet.
- Recursos AWS: Bucket S3 Privado (
yuruary-desktop-releases) accesible solo con credenciales de lectura para la app. - Mecanismo de Actualización:
La aplicación utiliza
electron-updater. Al iniciarse, consulta el archivolatest.ymlen el bucket. Si existe una versión superior a la actual, la descarga en segundo plano y solicita reinicio para instalar. - Pipeline Crítico:
- Build: Transpilación de TypeScript/React y Electron Main Process.
- Code Signing: Firma digital de los binarios (Windows/Mac) obligatoria para evitar alertas de antivirus (SmartScreen).
- Publish: Subida de los artefactos (
.exe,.dmg,.AppImage,latest.yml) a S3.
3. Diagrama de Flujo CI/CD
El siguiente diagrama detalla cómo fluye el código desde el repositorio hasta los usuarios finales.
4. Dependencias de Despliegue (Regla de Oro)
Para garantizar la consistencia de tipos en todo el sistema, respetamos una estricta Jerarquía de Publicación. No se puede desplegar un frontend si la librería compartida no ha sido actualizada y publicada primero.
- Primero: Shared Lib (
@softmena/yuruary-types)- Si hubo cambios en las interfaces, se incrementa la versión y se publica al registro NPM privado.
- Segundo: Backend (NestJS)
- Se actualiza la dependencia de la librería y se despliega el backend.
- Tercero: Frontends (Web & Desktop)
- Finalmente, se actualizan los clientes para consumir los nuevos tipos y funcionalidades.