CONTRAS
o Los cambios tienen que implementarse con frecuencia, casi de manera continua (al menos una vez al día), lo que puede suponer mucha presión para los desarrolladores en determinados momentos.
o El repositorio utilizado debe estar monitoreado por un servidor de integración continua, que ejecute las pruebas de forma automática mediante el uso de scripts, cada vez que se suban contribuciones. Es necesario asignar personal que a su vez supervise la ejecución de estos procesos, informe de los resultados y tome las acciones oportunas.
o Preparar y mantener esta infraestructura supone mucho trabajo.
PROS
o El trabajo de los desarrolladores avanza en linea con los objetivos del proyecto en todo momento, recibiendo feedback de manera constante que les permite corregir o mejorar sus contribuciones al proyecto. Lo que supone un ahorro considerable de tiempo.
o Los procesos de Integración, entrega e implementación están totalmente automatizados, todo el trabajo se ha realizado por adelantado y solo requiere supervisión y mantenimiento.
o Se minimiza el riesgo de publicar versiones en producción con errores graves que puedan afectar al producto. En general las versiones publicadas deberían tener menos errores trabajando de esta forma.
Herramientas
Configurar una sistema de integración continua no es algo trivial y puede requerir de mucha experiencia y esfuerzo para llevarlo a cabo correctamente. Pero en cualquier caso, a la larga merece la pena. Por suerte, existen muchas herramientas y servicios que pueden ayudarnos a que estas tareas sean menos arduas. Jenkins, Travis CI, TeamCity, IR CD, GitLab CI, Bamboo, CodeShip, CircleCI… de todos ellos Jenkins es el más utilizado. Aunque la mayoria de estos productos son gratuitos, en general suelen tener limitadas algunas de sus características en beneficio de versiones premium de pago.