Fase 5: Integración Continua (CI) Orientada a Desarrollo
1. Desglose de Acciones y Análisis de Automatización
Acción 1: Edición de código en la WS
Automatizable: No (trabajo técnico/creativo en el editor/IDE).
Conveniencia: Se mantiene 100% manual en la WS.
Acción 2: Sincronización del código hacia el Lab (git push buildlab)
Automatizable: Sí.
Conveniencia: Alta.
Descripción: Envío de cambios desde la Estación de Trabajo (WS) al laboratorio mediante comunicación directa de Git (git push buildlab).
Acción 3: Invocación de la compilación (make) en el Lab
Automatizable: Sí (vía SSH remoto).
Conveniencia: Alta.
Descripción: Ejecución remota de make en el directorio de pruebas sin abrir sesión interactiva.
Acción 4 y 5: Captura y gestión de logs de compilación (Éxito o Error)
Automatizable: Sí (redirección de stdout/stderr y evaluación del código de salida $?).
Conveniencia: Crítica.
Descripción: Redirección de salida y errores al archivo estático logs/build_latest.log en la WS y toma de decisión condicional según el código de retorno de make.
Acción 6: Ejecución del binario resultante y captura de logs del test (Si compila)
Automatizable: Sí (ejecución remota condicional).
Conveniencia: Alta.
Descripción: Invocación del binario en el Lab únicamente si la compilación fue exitosa, almacenando los resultados de LTP (TPASS, TFAIL, TBROK) en logs/test_latest.log.
2. Estrategia de Sincronización y Control de Cambios
Mecanismo: Comunicación directa entre repositorios vía Git local (git push buildlab).
Arquitectura: La WS actúa como centro de control centralizado (DRADIS), tratando al laboratorio (buildlab) como un destino remoto de ejecución (“caja negra”).
Metodología de Limpieza: Uso riguroso de git commit –amend y etiquetas genéricas (fix:, test:, ci:) durante iteraciones cortas para mantener el historial limpio y atómico.
3. Arnés de Automatización y Gestión de Logs (WS)
El flujo de trabajo se automatiza desde la WS mediante un script de control sin sesión interactiva:
Sincronización: Push directo de la rama de trabajo al laboratorio (git push buildlab).
Compilación Remota: Invocación de make en el Lab vía SSH.
Captura de Logs: Salida estándar y errores redirigidos a logs/build_latest.log en la WS.
Evaluación Condicional: Inspección del retorno ($?). Si falla, la ejecución finaliza e informa al usuario.
Ejecución de Pruebas: Si compila, se ejecuta el binario de LTP en el Lab y su salida se guarda en logs/test_latest.log.
Modo de Interacción: Silencioso (Quiet Mode). La inspección detallada se realiza abriendo o recargando los logs estáticos directamente en el editor.
4. Arquitectura y Flujo de Ejecución
[ WS (Centro de Mando / DRADIS) ] [ LAB (Caja Negra) ]
----------------------------------- ----------------------
1. Modificar código en el editor
2. git commit (--amend)
3. git push buildlab <rama> ---------------------> (Recibe cambios en su repo local)
4. Lanzar script de CI local ---------------------> 5. ssh builder@buildlab "make ..."
(Evalúa $? y guarda en build_latest.log)
[ ¿Falló compilación? ]
├── SÍ ──> Notifica error. FIN.
└── NO ──> 6. ssh builder@buildlab "/path/binario"
(Guarda en test_latest.log y notifica TPASS/TFAIL)