Marco Ordoñez

Qué son los servidores CI y como nos puede ayudar

Hace unos días hice una breve investigación sobre las servidores CI para la empresa en la que trabajo, el proposito era evaluar si una implementación continua nos ayudaría a reducir el tiempo que consumimos al integrar nuestros proyectos y si podría adaptarse a nuestro flujo de trabajo.

Luego de reviasar un par de libros y articulos sobre el tema, podemos concluir en lo siguiente:

Descripción general

Un proyecto de desarrollo se divide en varias etapas, una de ellas es la integración, que dependiendo de la forma como se realiza puede ser complicada o intensamente complicada. Algunos equipos realizan solo una integración final para unir los cambios a un proyecto, en algunos casos se realizan integraciones mas seguidas dependiendo de la necesidad de entrega entre otras cosas. La integración continua nos lleva a realizar integraciónes en periodos cortos que ayudan a minimizar el impacto de la misma.

Sabemos por experiencia que en el proceso de desarrollo existen algunas tareas que al ejecutarse van fallar, para minimizar la magnitud del fallo podemos reducirlas en tareas mas pequeñas y seguidas.

Con la integración continua podemos reducir la cantidad de errores que se presentan al realizar la integración.

La implementación de CI beneficia a los equipos de desarrollo reduciendo el tiempo de integración final e incluyendo buenas practicas para asegurar que la integración permanente pueda ser realizada de forma correcta.

Permite a los equipos de QA realizar pruebas permanentes con cambios pequeños, lo que permite que las pruebas sean mas concretas y eficaces.

Logra mejorar el orden en el desarrollo de software y por ende un mejor producto para el cliente.

Buenas prácticas

  • Usar una herramienta de control de versiones
  • Debe existir un mainline en el repositorio
  • Automatizar la compilación y/o despliegue
  • Automatizar las pruebas unitarias
  • Realizar una integración diaria por integrante
  • Asegurarse que la integración funcione en el servidor de integración
  • Probar en una replica del servidor de producción

Como funciona

  1. Los servidores CI se encargan de obtener el código fuente de un repositorio en un intervalo de tiempo (cada 5 minutos por ejemplo)
  2. Luego de obtener el código puede ejecutar las pruebas unitarias antes de realizar el despliegue.
  3. Si las pruebas fallan se notifica (email) acerca del incidente y rechaza el cambio.
  4. Si las pruebas pasan se realiza el despliegue y se instala la nueva versión del programa
    (Existen otras implementaciones basadas en hooks que pueden resultar mas eficientes)

La automatización de tareas en el desarrollo de software es un aporte importante para la optimización de los procesos.

El uso de un servidor CI junto con otras técnicas de automatización ayudan a los equipos a desarrollar software de forma ordenada y evitan realizar tareas repetitivas enfocándolos en el funcionamiento del programa.

Marco Ordonez