You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Este documento resume el flujo de ejecución del DevContainer en Linux (coexistente con Vagrant) y cómo se orquesta dentro de un pipeline CI/CD. Se incluyen diagramas PlantUML listos para generar vistas de flujo y de secuencia.
4
+
5
+
## ¿Cómo llamar al análisis inicial?
6
+
Si necesitas un diagnóstico para entender "qué estamos haciendo" en el DevContainer y su pipeline, propón un **Análisis de Paridad Operativa DevContainer–CI/CD**. El objetivo es validar que los flujos locales (Codespaces/Vagrant), los hooks del contenedor y las etapas de CI usan las mismas variables, comandos y expectativas de cobertura.
7
+
8
+
## Paso a paso (Linux + Vagrant)
9
+
1.**Preparar el host / Codespaces**
10
+
- Dado que los hosts locales tienen **restricción de Docker**, usa GitHub Codespaces (Dev Containers en la nube). No es necesario instalar Docker Engine en tu máquina.
11
+
- Si operas con Vagrant para las bases fuera de Codespaces, expón los puertos (p. ej., `15432` para PostgreSQL y `13306` para MariaDB) y consúmelos desde el contenedor remoto.
12
+
- Copia `.devcontainer/.env.example` a `.devcontainer/.env` y ajusta credenciales/hosts.
13
+
14
+
2.**Inicializar el workspace**
15
+
- Abre el repo en VS Code y selecciona "Reopen in Container".
16
+
-`init_host.sh` valida estructura, scripts y genera `.env` si falta.
17
+
18
+
3.**Construir e iniciar el contenedor**
19
+
-`on_create.sh` prepara el runtime (Python 3.12, Git) y `update_content.sh` instala dependencias.
20
+
-`post_create.sh` aplica migraciones y crea el superusuario inicial.
- Desde la app en el contenedor usa los hosts internos (`db_postgres`, `db_mariadb`).
25
+
- Para usar Vagrant como origen, edita `.devcontainer/.env` con los puertos publicados y reinicia el contenedor; los servicios del compose pueden deshabilitarse comentando las secciones de DB si no se necesitan.
26
+
27
+
5.**Ciclo de desarrollo (TDD)**
28
+
- Escribe tests antes del código, ejecuta `pytest --maxfail=1 --cov=.`.
29
+
- Mantén cobertura ≥ 80% y refactoriza tras cada ciclo Red→Green→Refactor.
30
+
31
+
## Pipeline CI/CD recomendado
32
+
1.**Trigger**: push o PR hacia ramas principales.
33
+
2.**Jobs**:
34
+
-**lint**: `flake8`/`ruff` y verificación de formato.
35
+
-**test**: `pytest --cov` con servicios efímeros de Postgres/MariaDB (usando el mismo compose o contenedores dedicados).
36
+
-**build**: imagen de aplicación (opcional si producción no usa Docker) + empaquetado de artefactos.
37
+
-**deploy**: solo en ramas protegidas; reutiliza las mismas variables declaradas en `.devcontainer/.env.example` para paridad de entorno.
38
+
3.**Gates**: el despliegue se habilita sólo si lint + tests + cobertura ≥ 80% pasan.
39
+
40
+
## Diagrama PlantUML - Flujo de lifecycle (actividad)
41
+
```plantuml
42
+
@startuml
43
+
start
44
+
:Init host (init_host.sh);
45
+
if (Env file existe?) then (No)
46
+
:Copiar .env.example a .env;
47
+
endif
48
+
:Build & create container (devcontainer.json);
49
+
:Setup runtime (on_create.sh);
50
+
:Instalar deps (update_content.sh);
51
+
:Base de datos y migraciones (post_create.sh);
52
+
:Smoke tests / versiones (post_start.sh);
53
+
stop
54
+
@enduml
55
+
```
56
+
57
+
## Diagrama PlantUML - Ejecución CI/CD
58
+
```plantuml
59
+
@startuml
60
+
actor Developer
61
+
participant "GitHub Actions" as CI
62
+
participant "Servicios DB" as DB
63
+
64
+
Developer -> CI: Push/PR
65
+
CI -> DB: Levantar Postgres/MariaDB efímeros
66
+
CI -> CI: Job lint (flake8/ruff)
67
+
CI -> CI: Job tests (pytest --cov)
68
+
CI -> CI: Calcular cobertura (gate ≥ 80%)
69
+
CI -> CI: Job build (imagen/artefactos)
70
+
CI -> Developer: Publicar resultados
71
+
@enduml
72
+
```
73
+
74
+
## Referencia rápida
75
+
- Ejecuta los scripts manualmente desde `infrastructure/devcontainer/scripts/` si necesitas debug.
76
+
- Los logs se almacenan en `infrastructure/devcontainer/logs/` (creados automáticamente).
77
+
- Alinea las variables de `.devcontainer/.env` con las que usarás en CI y en producción sin contenedores para minimizar sorpresas.
Inventario de documentos, análisis y evidencias para QA en el dominio DevOps. La estructura replica el modelo de `docs/gobernanza/qa` para mantener consistencia documental.
0 commit comments