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
194 lines
5.2 KiB
Markdown
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*
|