Este documento describe el proceso de integración continua. Explica que la integración continua permite compilar y probar el código automáticamente cada vez que hay cambios, lo que ayuda a detectar errores temprano. Luego detalla las etapas del procedimiento, incluyendo que los desarrolladores compilan y prueban su código localmente antes de confirmarlo, y luego la herramienta de integración continua compila y prueba el código en un servidor para verificar que no hay errores. Finalmente, presenta un caso práctico donde se
3. 1. Introducción
Integración Continua
● Objetivo: Realización de despliegues diarios o suficientemente a
menudo como para justificar montar una estructura de despliegues,
compilación y propagación de nuevas versiones.
● Permite que la construcción y ejecución de pruebas sea realizada
cada vez que el código cambia o cuando se configure.
● Detección y solución de dependencias e incompatibilidades en el
código.
● El proceso de build diario minimiza los riesgos de integración porque
los problemas son identificados continuamente.
● Comprueba la calidad de código.
4. 2. Procedimiento
IC - Procedimiento
● Los desarrolladores del equipo hacen modificaciones en el código fuente, compilan y
ejecutan las pruebas unitarias automatizadas y hacen el check-in (o commit) del
código en la línea activa del desarrollo en la herramienta de control de versiones.
● La herramienta de integración continua verifica si nuevo código se ha colocado en la
línea activa del software de control de versiones.
● La herramienta de integración continua extrae todo el código fuente y compila en el
servidor de preproducción que tiene por objetivo generar builds limpios.
● Si compila, se ejecuta: compilar y ejecutar pruebas unitarias, pruebas de aceptación,
generar información de las pruebas, de la cobertura y de análisis estático de código.
● Se actualizan los datos con los resultados.
● La herramienta envía mensajes (por email) para el equipo informando el resultado del
proceso de build durante la integración continua.
5. 3. Caso práctico
Objetivos
OBJETIVOS
Descripción
Reducción del número de errores encontrados en entornos de preproducción y producción.
Automatizar la auditoría del código
Reducción del Código inestable subido a SVN (con errores o incompleto)
Reducir las colisiones en las modificaciones de código simulténo en trabajo de desarrollo en equipo
Reducción del número de errores encontrados en entornos de preproducción y producción.
Agilizar los procesos de despliegue de versión en los entornos.
Cobertura de las pruebas unitarias
Garantizar la ausencia de errores en los test de regresión
Monitorización del cumplimiento de las buenas prácticas
Reducir el tiempo del ciclo de vida de testeo .
7. 3. Caso práctico
Tareas a realizar
● Definición del plan de implantación.
● Instalación de los productos: Jira, Jenkins, Nexus, Sonar, SVN.
● Configuración de los productos.
● Creación de las comunicaciones a medida.
● Creación de reglas de validación a medida.
8. 3. Caso práctico – Diagrama de sistemas
Oracle
SVN failover SVN
Jenkins Slave
Jenkins master Jira Sonar
Nexus
Jira failover Sonar failover
9. 3. Caso práctico - Desarrollo
Internet
Repostorio de
IDE
Artefactos Corporativo
Repositorio Local Maven
Dependencias
Repositorios Públicos
Publica artefactos
Dependencias
Notificaciones
IDE
Repositorio Local Maven Etiqueta
Cambios
Cambios
Servidor de Integración
Entorno de Pruebas
Repositorio de Código Continua
Consulta
Gestiona Ejecución
Servidor de Análisis
de Calidad
10. 3. Caso práctico - Despliegues
Internet
Repostorio de
Artefactos Corporativo
Repositorios Públicos
Recoge artefactos
Petición de despliegue
Despliega
Actualización de resultado
Jira Servidor de Integración Entorno de Pruebas
Continua
13. 3. Caso práctico - Demostración
Jenkins
● Ofrece plugin de integración Jira: detecta el identificador de issue en el
mensaje de confirmación y lo comenta con el resultado del build.
14. 3. Caso práctico - Demostración
Bamboo
● A nivel de proyecto
● A nivel de versión
16. 3. Caso práctico - Demostración
Sonar
Nota: no es una pantalla Sonar del proyecto real. No se ha obtenido el permiso
necesario.
17. 3. Caso práctico
CONSECUCIÓN DE OBJETIVOS
Consecución Descripción Métrica
Reducción del número de errores encontrados en Reducción del 75% de los errores
entornos de preproducción y producción.
En una posible nueva fase. Con
Automatizar la auditoría del código
Selenium.
Reducción del Código inestable subido a SVN (con errores
Reducción del 50% de los errores
o incompleto)
Reducir las colisiones en las modificaciones de código
Avisos y notificaciones mail
simulténo en trabajo de desarrollo en equipo
Control de dependencias con Maven Sistema transitivo y de herencias
Agilizar los procesos de despliegue de versión en los Creación de workflows y despliegue
entornos. según entorno
Cobertura de las pruebas unitarias y ratio de éxito. Métrica en Sonar
En una posible nueva fase.
Garantizar la ausencia de errores en los test de regresión
Con Selenium
Métrica en Sonar
Monitorización del cumplimiento de las buenas prácticas
Reuducir el tiempo del ciclo de vida de testeo . Reducción del 50% del tiempo
18. 4. Conclusiones
● Tener métricas de la cálidad de código es vital para iniciar un
proceso de mejora continua “No se puede mejorar aquello que no se
puede medir”
● Invertir en calidad de código es altamente rentable
● Es posible mejorar la calidad del código a la vez que se desarrolla sin
necesidad de parar el desarrollo
● IC y TDD te permiten no sólo aumentar la calidad del código sino
aumentar la productividad de todo el equipo de desarrollo
● Asegurar la calidad código desarrollo es asegurar el éxito de la
puesta en producción.
● La formación y hacerse propia las herramientas y metodologías de
trabajo son imprescindibles para garantizar un éxito duradero en
el tiempo.