workspace-v1/projects/erp-suite/scripts/deploy/README.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

194 lines
5.2 KiB
Markdown

# Deploy Scripts - ERP Suite
## Arquitectura de Deploy
```
DESARROLLO (Workspace unificado) DEPLOY (Repos independientes)
================================ ==============================
/home/isem/workspace/ /home/isem/deploy-repos/
└── projects/erp-suite/ ├── erp-construccion-backend/
└── apps/verticales/ │ ├── .git/
└── construccion/ │ ├── Dockerfile
├── backend/ ───────────────>│ ├── package.json
├── frontend/ │ └── src/
│ ├── web/ ───────────────>├── erp-construccion-frontend-web/
│ └── mobile/ ─────────────>├── erp-construccion-frontend-mobile/
└── database/ ───────────────>└── erp-construccion-database/
```
## Scripts Disponibles
### sync-to-deploy-repos.sh
Sincroniza componentes del workspace a repositorios de deploy independientes.
```bash
# Uso
./sync-to-deploy-repos.sh [vertical] [componente]
# Ejemplos
./sync-to-deploy-repos.sh construccion backend # Solo backend
./sync-to-deploy-repos.sh construccion all # Toda la vertical
./sync-to-deploy-repos.sh all all # Todo el proyecto
```
## Flujo de Trabajo
### 1. Desarrollo (Workspace)
```bash
# Trabajar en el workspace unificado
cd /home/isem/workspace/projects/erp-suite/apps/verticales/construccion/backend
npm run dev
# Hacer commits al workspace
cd /home/isem/workspace
git add .
git commit -m "feat: nueva funcionalidad"
git push origin main
```
### 2. Sincronización a Deploy Repos
```bash
# Cuando esté listo para deploy
cd /home/isem/workspace/projects/erp-suite/scripts/deploy
./sync-to-deploy-repos.sh construccion backend
```
### 3. Push a Repos de Deploy
```bash
# Configurar remoto (primera vez)
cd /home/isem/deploy-repos/erp-construccion-backend
git remote add origin git@github.com:isem-digital/erp-construccion-backend.git
# Push para trigger de Jenkins
git add .
git commit -m "deploy: sync from workspace"
git push origin main
```
### 4. Jenkins Pipeline (Automático)
Jenkins detecta el push y ejecuta:
```groovy
pipeline {
agent any
environment {
DOCKER_IMAGE = "erp-construccion-backend"
DOCKER_TAG = "${BUILD_NUMBER}"
}
stages {
stage('Install') {
steps {
sh 'npm ci'
}
}
stage('Lint') {
steps {
sh 'npm run lint'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Build') {
steps {
sh 'npm run build'
}
}
stage('Docker Build') {
steps {
sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
}
}
stage('Docker Push') {
steps {
sh "docker push registry.isem.digital/${DOCKER_IMAGE}:${DOCKER_TAG}"
}
}
stage('Deploy') {
steps {
sh "kubectl set image deployment/${DOCKER_IMAGE} ${DOCKER_IMAGE}=registry.isem.digital/${DOCKER_IMAGE}:${DOCKER_TAG}"
}
}
}
}
```
## Configuración de Repositorios Remotos
### GitHub/GitLab
Para cada componente, crear un repositorio:
| Componente | Repositorio |
|------------|-------------|
| Backend | `erp-construccion-backend` |
| Frontend Web | `erp-construccion-frontend-web` |
| Frontend Mobile | `erp-construccion-frontend-mobile` |
| Database | `erp-construccion-database` |
### Configurar SSH Keys
```bash
# Generar clave SSH para deploy
ssh-keygen -t ed25519 -C "deploy@isem.digital" -f ~/.ssh/id_ed25519_deploy
# Agregar al agente SSH
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_deploy
# Copiar clave pública a GitHub/GitLab
cat ~/.ssh/id_ed25519_deploy.pub
```
## Estructura de Cada Repo de Deploy
Cada repositorio de deploy contiene:
```
erp-{vertical}-{component}/
├── .git/ # Git independiente
├── .gitignore # Generado automáticamente
├── Dockerfile # Para containerización
├── package.json # Dependencias
├── package-lock.json # Lock file
├── tsconfig.json # Config TypeScript
├── src/ # Código fuente
└── scripts/ # Scripts de utilidad
```
## Exclusiones
El script de sincronización excluye automáticamente:
- `node_modules/` - Dependencias (se instalan en CI)
- `dist/` - Build output (se genera en CI)
- `.env` - Variables de entorno locales
- `coverage/` - Reportes de cobertura
- Logs y archivos temporales
## Notas Importantes
1. **No editar los repos de deploy directamente** - Siempre trabajar en el workspace
2. **Sincronizar antes de cada deploy** - Asegura que el código está actualizado
3. **Commits separados** - El workspace y los repos de deploy tienen historiales independientes
4. **Variables de entorno** - Cada ambiente tiene su propio `.env` (no sincronizado)
---
*Última actualización: 2025-12-12*