Orquesta Agentes IA que desarrollan por ti
Verificando...
21-deploy-production
Procedimiento: Deploy a Producci├│n
Despliegue
1 plugin(s)
Editor
Preview
Tareas
0
Info
Titulo
Guía el despliegue a producción. Verifica pre-requisitos, ejecuta checklist de deploy, monitorea health checks, y documenta el proceso de rollback.
Descripcion
Contenido Markdown
14124 caracteres
Guardar
# Procedimiento: Deploy a Producci├│n ## Metadata - **ID**: PROC-21 - **Frecuencia**: Cada deploy a producci├│n - **Duraci├│n estimada**: 45-90 min (seg├║n complejidad) - **Requiere**: Acceso a GitLab CI, api.dmi.es, Sentry - **Dependencias**: PROC-04, PROC-05, PROC-09, PROC-01 - **Rama de trabajo**: develop - **Etiqueta de deploy**: stable ## Objetivo Ejecutar un deploy a producci├│n de forma segura y ordenada, consolidando todos los procedimientos necesarios en un ├║nico flujo. ## Flujo de Ejecuci├│n ``` ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ Ôöé PROC-21: Deploy a Producci├│n Ôöé Ôöé Ôöé Ôöé ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ Ôöé Ôöé Ôöé PROC-04 ÔöéÔöÇÔöÇÔû║Ôöé PROC-05 ÔöéÔöÇÔöÇÔû║Ôöé PROC-09 ÔöéÔöÇÔöÇÔû║Ôöé PROC-01 Ôöé Ôöé Ôöé Ôöé Tests Ôöé Ôöé Security Ôöé Ôöé Review Ôöé Ôöé Docs Ôöé Ôöé Ôöé ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ Ôöé Ôöé Ôöé Ôöé Ôöé Ôöé Ôöé Ôöé Ôû╝ Ôû╝ Ôû╝ Ôû╝ Ôöé Ôöé ÔöîÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÉ Ôöé Ôöé Ôöé DEPLOY Ôöé Ôöé Ôöé Ôöé BD ÔåÆ Build ÔåÆ Tag ÔåÆ Pipeline ÔåÆ Verificaci├│n ÔåÆ Monitoreo Ôöé Ôöé Ôöé ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ Ôöé ÔööÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÿ ``` --- ## FASE 1: Pre-Requisitos (5 min) ### 1.1 Verificar estado inicial ```bash # Est├ís en la rama correcta git branch --show-current # Esperado: develop # Sin cambios pendientes git status # Esperado: working tree clean # Actualizado con remoto git pull origin develop ``` - [ ] Rama correcta (develop) - [ ] Sin cambios locales pendientes - [ ] Sincronizado con remoto ### 1.2 Inventario de cambios ```bash # Commits desde ├║ltimo release git log --oneline $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD ``` Listar cambios principales: | Tipo | Descripci├│n | Archivos afectados | |------|-------------|-------------------| | feat | | | | fix | | | | refactor | | | - [ ] Cambios identificados --- ## FASE 2: PROC-04 - Tests (10 min) ### 2.1 Ejecutar tests ```bash cd src dotnet test --verbosity normal ``` - [ ] Todos los tests pasan - [ ] N├║mero de tests: ___ ### 2.2 Verificar cobertura de cambios nuevos Si hay c├│digo nuevo, verificar que tiene tests: ```bash # Listar archivos modificados git diff --name-only $(git describe --tags --abbrev=0)..HEAD -- "*.cs" | grep -v Test # Verificar tests correspondientes existen # Para cada archivo X.cs, deber├¡a existir XTests.cs ``` - [ ] C├│digo nuevo tiene tests (o justificaci├│n si no) ### 2.3 Resultado PROC-04 | M├®trica | Valor | OK | |---------|-------|-----| | Tests totales | | | | Tests pasando | | | | Tests fallando | 0 | | - [ ] **PROC-04 COMPLETADO** --- ## FASE 3: PROC-05 - Security (10 min) ### 3.1 Ejecutar Semgrep (si no hay CI) ```bash # Instalar si no est├í pip install semgrep # Ejecutar en c├│digo nuevo semgrep --config=auto src/ ``` ### 3.2 Verificar resultado en CI/CD Si hay pipeline de CI, revisar el job de Semgrep: - GitLab: CI/CD ÔåÆ Pipelines ÔåÆ ├Ültimo pipeline ÔåÆ Job "semgrep" ### 3.3 Revisar findings | Severidad | Cantidad | Acci├│n | |-----------|----------|--------| | Critical | 0 | Bloquea deploy | | High | 0 | Bloquea deploy | | Medium | | Evaluar | | Low | | Documentar | ### 3.4 Checklist seguridad manual Para el c├│digo nuevo, verificar: - [ ] No hay SQL sin parametrizar (`string.Format` o `$"..."` con SQL) - [ ] No hay secretos hardcodeados - [ ] Connection strings usan configuraci├│n, no c├│digo - [ ] Inputs de usuario se validan antes de usar - [ ] No hay SSRF (URLs construidas desde input de usuario) ### 3.5 Resultado PROC-05 - [ ] 0 findings Critical/High - [ ] Findings Medium/Low documentados o resueltos - [ ] **PROC-05 COMPLETADO** --- ## FASE 4: PROC-09 - Code Review (10 min) ### 4.1 Revisar PRs pendientes Si hay PRs abiertos relacionados: ```bash # Listar PRs (GitLab CLI o web) glab mr list --state opened ``` - [ ] Todos los PRs relacionados mergeados ### 4.2 Checklist de review Para cada cambio significativo: | Check | OK | |-------|-----| | C├│digo sigue convenciones del proyecto | | | Nombres descriptivos | | | Sin c├│digo duplicado | | | Manejo de errores apropiado | | | Logging suficiente | | | Sin TODO/FIXME cr├¡ticos | | ### 4.3 Resultado PROC-09 - [ ] **PROC-09 COMPLETADO** --- ## FASE 5: PROC-01 - Documentaci├│n (5 min) ### 5.1 Verificar docs afectadas Si el cambio afecta a: | Cambio | Documento a actualizar | |--------|----------------------| | Nueva tool MCP | 20-mcp-tools.md | | Cambio en orders | 21-mcp-orders.md | | Nueva feature Icecat | 25-icecat-features.md | | Cambio de arquitectura | 10-architecture.md | | Nuevo procedimiento | 00-master-procedures.md | ### 5.2 Verificar documentaci├│n actualizada ```bash # Archivos .md modificados en este release git diff --name-only $(git describe --tags --abbrev=0)..HEAD -- "*.md" ``` - [ ] Documentaci├│n actualizada (o no aplica) - [ ] **PROC-01 COMPLETADO** --- ## FASE 6: Base de Datos (si aplica) (10 min) ### 6.1 Verificar cambios de BD ┬┐Este release incluye cambios de base de datos? - [ ] NO ÔåÆ Saltar a Fase 7 - [ ] S├ì ÔåÆ Continuar ### 6.2 Ejecutar migraciones en producci├│n ```sql -- Conectar a servidor de producci├│n -- Server: api.dmi.es -- Database: [IA] o seg├║n corresponda -- Ejecutar scripts de migraci├│n -- (Listar scripts aqu├¡) ``` ### 6.3 Verificar migraci├│n ```sql -- Verificar estructura creada SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'NombreTabla' -- Verificar datos (si aplica) SELECT COUNT(*) FROM NombreTabla ``` - [ ] Migraci├│n ejecutada - [ ] Datos verificados --- ## FASE 7: Deploy (15 min) ### 7.1 Commit de cambios ```bash # Verificar qu├® se va a commitear git status git diff --staged # Commit con mensaje descriptivo git add . git commit -m "feat: [descripci├│n del cambio principal] - [Detalle 1] - [Detalle 2] - [Detalle 3] Refs: PROC-21" ``` - [ ] Commit creado ### 7.2 Push a remoto ```bash # Push a la rama develop git push origin develop ``` - [ ] Push completado ### 7.3 Aplicar etiqueta stable ```bash # Mover etiqueta stable al commit actual (triggerea deploy autom├ítico) git tag -f stable git push origin stable --force ``` El CI/CD detectar├í la etiqueta `stable` y desplegar├í autom├íticamente. - [ ] Etiqueta stable aplicada - [ ] Push de etiqueta completado - [ ] Pipeline CI/CD iniciado ### 7.4 Verificar pipeline ```bash # Verificar en GitLab que el pipeline est├í corriendo # GitLab ÔåÆ CI/CD ÔåÆ Pipelines ÔåÆ Buscar el m├ís reciente con tag "stable" ``` - [ ] Pipeline ejecut├índose ### 7.5 Esperar despliegue ```bash # Esperar a que el contenedor se actualice (~60-90 segundos) sleep 90 ``` --- ## FASE 8: Verificaci├│n Post-Deploy (10 min) ### 8.1 Health check ```bash curl -s https://bigcapi.dmi.es/health # Esperado: {"status":"Healthy",...} ``` - [ ] Health check OK ### 8.2 Smoke test MCP ```bash # Listar tools curl -s -X POST https://bigcapi.dmi.es/mcp \ -H "Content-Type: application/json" \ -H "X-Api-Key: F8026DF8-DAC4-4252-B7DF-FCBC644CEED7" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \ | jq '.result.tools | length' # Esperado: 39 (o n├║mero actual de tools) ``` - [ ] Tools list OK - [ ] N├║mero de tools: ___ ### 8.3 Test funcional b├ísico ```bash # Buscar producto curl -s -X POST https://bigcapi.dmi.es/mcp \ -H "Content-Type: application/json" \ -H "X-Api-Key: F8026DF8-DAC4-4252-B7DF-FCBC644CEED7" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"products_search","arguments":{"q":"portatil","limit":1}}}' \ | jq '.result' ``` - [ ] B├║squeda funciona ### 8.4 Verificar feature espec├¡fica del release ```bash # Test espec├¡fico para Session Instructions: # Primera llamada debe incluir _sessionContext curl -s -X POST https://bigcapi.dmi.es/mcp \ -H "Content-Type: application/json" \ -H "X-Api-Key: F8026DF8-DAC4-4252-B7DF-FCBC644CEED7" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"products_search","arguments":{"q":"test","limit":1}}}' \ | jq '._sessionContext' # Esperado: objeto con instrucciones (primera llamada) o null (segunda llamada) ``` - [ ] Feature espec├¡fica verificada --- ## FASE 9: Monitoreo Post-Deploy (30 min - 2h) ### 9.1 Verificar Sentry ```bash # Errores nuevos en ├║ltimos 30 min sentry-cli issues list \ --org dmi-hl \ --project apibigcommerce-mcp \ --query "is:unresolved firstSeen:-30m" ``` O usar el MCP de Sentry para buscar issues no resueltos de las ├║ltimas 2 horas. ### 9.2 Log de monitoreo | Tiempo | Errores Sentry | Estado | Notas | |--------|---------------|--------|-------| | +15min | | | | | +30min | | | | | +1h | | | | | +2h | | | | - [ ] Sin errores cr├¡ticos nuevos ### 9.3 Rollback (si necesario) Si hay errores cr├¡ticos: ```bash # Identificar commit anterior git log --oneline -5 # Rollback: mover stable al commit anterior git checkout <commit-anterior> git tag -f stable git push origin stable --force # Notificar echo "ROLLBACK ejecutado a <commit>. Investigando..." ``` --- ## FASE 10: Cierre (5 min) ### 10.1 Actualizar historial A├▒adir entrada en la tabla de Historial de Ejecuciones (al final de este documento). ### 10.2 Comunicar ├®xito ``` Ô£à Release completado Fecha/Hora: [FECHA] Cambios principales: - [Cambio 1] - [Cambio 2] Verificaciones: - Health check: OK - Smoke tests: OK - Sentry (2h): 0 errores nuevos Responsable: [Nombre] ``` - [ ] Historial actualizado - [ ] Comunicaci├│n enviada ### 10.3 Mensaje de finalizaci├│n **IMPORTANTE - ACCI├ôN REQUERIDA AL FINALIZAR:** Cuando hayas completado todos los pasos de este procedimiento, DEBES ejecutar el siguiente comando usando la herramienta Bash: Ejecuta: `echo "====== PROCESO TERMINADO [$(date +%H%M%S)] ======" && echo "RESULTADO: Deploy produccion OK, health 200, X tools, 0 errores Sentry"` Sustituye X por el n├║mero de tools MCP. --- ## Resultado | Estado | Criterio | |--------|----------| | **├ëxito** | Todas las fases completadas, 2h sin errores | | **Parcial** | Deploy OK pero con warnings/issues menores | | **Fallo** | Rollback ejecutado ÔåÆ Crear PROC-07 (Incident) | --- ## Quick Reference ### Comandos frecuentes ```bash # Health check curl https://bigcapi.dmi.es/health # Contar tools curl -s -X POST https://bigcapi.dmi.es/mcp \ -H "Content-Type: application/json" \ -H "X-Api-Key: F8026DF8-DAC4-4252-B7DF-FCBC644CEED7" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \ | jq '.result.tools | length' # Commit + Push + Deploy git add . git commit -m "feat: descripci├│n" git push origin develop git tag -f stable && git push origin stable --force # Rollback (volver a commit anterior) git checkout <commit-anterior> git tag -f stable git push origin stable --force ``` ### Contactos escalaci├│n | Situaci├│n | Contacto | |-----------|----------| | Infra/Portainer | [Contacto] | | Base de datos | [Contacto] | | Sentry/Monitoreo | [Contacto] | --- --- ## Output Estructurado (Nexus) Al finalizar, el agente DEBE generar un bloque JSON con el siguiente formato para que Nexus pueda procesarlo automaticamente: ```json { "result": "success", "summary": "Ejecucion de PROC-21 completada. [Descripcion breve de resultados]", "metrics": { "issues_found": 0, "issues_resolved": 0, "deploy_success": true, "health_check_passed": true, "custom": { "procedure_specific_metric": "value" } }, "backlog_items": [ { "title": "Titulo del item de seguimiento", "description": "Descripcion detallada si se requiere accion futura", "priority": "medium", "type": "improvement", "tags": ["proc-21"] } ], "next_steps": [ "Accion recomendada 1", "Accion recomendada 2" ], "warnings": [ "Advertencias encontradas durante la ejecucion" ] } ``` **Campos requeridos:** - `result`: `"success"` | `"partial"` | `"failed"` - `summary`: Resumen ejecutivo en 1-3 lineas **Metricas especificas de este procedure:** - deploy_success, rollback_needed, health_check_passed **Criterios de resultado:** - `success`: Procedimiento completado sin errores criticos - `partial`: Completado con algunos problemas menores o items pendientes - `failed`: Error critico o no se pudo completar ## Historial de Ejecuciones | Fecha | Versi├│n | Ejecutor | Duraci├│n | Resultado | Notas | |-------|---------|----------|----------|-----------|-------| | | | | | | |
H1
H2
H3
Bold
Italic
Code
Lista
Num
Task
Code Block
Link
Nexus Platform
Reconectando
Recuperando la conexion
Se ha interrumpido la conexion con el servidor. Estamos reconectando automaticamente.
Reconectando...
Manten esta pestana abierta, volvemos enseguida.
No hemos podido reconectar
El servidor puede estar reiniciandose o tu conexion a internet es inestable.
Reintentar
La sesion ha expirado
Recarga la pagina para iniciar una nueva sesion.
Recargar
Si no vuelve en 30 segundos, recarga la pagina.