Qué hace Continuous Integration paso a paso
Clase 7 de 21 • Curso Profesional de DevOps
Contenido del curso
Containers y ambientes de desarrollo
Pruebas
Integración Continua
Despliegue Continuo
Reliability
Cierre del curso
La implementación de Continuous Integration bien hecha empieza por lo esencial: código versionado, pruebas que corren en cada cambio y un servidor de automatización confiable. Aquí verás cómo mantener master estable, generar un artifact inmutable y priorizar code reviews sobre métricas engañosas como el code coverage absoluto.
¿Qué es Continuous Integration y por qué importa?
La práctica busca probar cada cambio antes de integrarlo a master. Si los tests fallan en el branch o en el pull request, no se fusiona: se protege producción y la confianza del equipo.
- Código siempre versionado: usa Git o Mercurial. Debe haber commits y una historia de cambios.
- Pruebas obligatorias: los tests deben correr al bajar el repositorio. Pueden estar en otro repo, pero también versionadas.
- Ejecución en cada evento: nuevos commits, pull requests y cambios en master deben disparar el ciclo.
- Historial centralizado: el CI es un audit trail: qué pasó, quién hizo el commit y cuándo se rompió el build.
¿Cómo versionar código con Git y proteger master?
- Trabaja en branches y valida con pull requests.
- Integra solo si los tests pasan en el branch y en master.
- Evita romper producción: no mezclar cambios rojos a master.
¿Qué rol cumple el servidor de automatización?
- Usa Jenkins si lo hospedas tú; para proveedor gestionado, CircleCI es una buena opción. También se mencionan servicios como CodeChef.
- El servicio baja la última versión del branch, ejecuta los tests y reporta estado del build.
¿Cómo se fortalece la calidad con pruebas y análisis estático?
Además de unit tests, integra análisis de style guides y complejidad con herramientas como CodeClimate u otras. La meta: código limpio, normas de estilo consistentes y una base sana a medida que crece el equipo.
¿Qué diferencia hay entre unit tests e integration tests?
- Integration tests: mayor valor y alcance. Ideal cubrir la mayoría de casos aquí.
- Unit tests: útiles para casos que los integration no cubren fácilmente.
- Si cambias demasiado el diseño solo para testear, considera repensar el enfoque.
¿Cómo usar style guides y análisis de complejidad?
- Enforza estilo como parte del CI para consistencia.
- Añade análisis de complejidad para detectar módulos difíciles de mantener.
- Mantén la limpieza como requisito de calidad, no como idea opcional.
¿Qué valor real tiene el code coverage frente a code reviews?
- Un umbral de 70 % de coverage puede bloquear builds cuando faltan pruebas, pero puede ser un red herring si las pruebas no validan lo importante.
- Da más peso a los code reviews: comparten conocimiento, descubren riesgos y evitan silos.
- Siempre usa pull request reviews: A propone, B evalúa. Mejora calidad y aprendizaje, aunque añada algo de espera.
¿Por qué el artifact inmutable es el output clave del CI?
Cuando todo pasa, el CI genera un artifact inmutable: lo que se promueve por todos los ambientes sin cambios. Esto garantiza homogeneidad y facilita rollback.
¿Cómo gestionar builds, releases y rollback?
- El artifact puede ser una imagen de Docker o un Debian package.
- Usa el mismo artifact en staging y producción: misma versión en todos los ambientes.
- Conserva artifacts por largo tiempo: meses o hasta un año por auditoría.
- Etiqueta cada build con su release asociado y guarda la referencia del artifact en un repositorio remoto.
¿Te funcionó alguna práctica adicional de CI para mantener master verde y el equipo alineado? Cuéntalo en los comentarios y enriquezcamos el flujo de trabajo entre todos.