tools integracion herramientas esquema entrega despliegue continuo continua aws continuous-integration

continuous-integration - esquema - integracion continua herramientas



¿La integración continua es importante para un desarrollador en solitario? (7)

CI beneficia a un desarrollador en solitario en el sentido de que está al tanto si olvidó registrar algo (porque la compilación se romperá). Sin embargo, el valor de integración disminuye cuando no hay otros desarrolladores.

Nunca antes había usado herramientas de CI, pero por lo que he leído, no estoy seguro de que brinden algún beneficio a un desarrollador en solitario que no está escribiendo código todos los días.

Primero, ¿qué beneficios proporciona CI a cualquier proyecto?

Segundo: ¿quién debería usar CI? ¿Beneficia a todos los desarrolladores?


El beneficio de CI radica en la capacidad de descubrir temprano cuando un control ha roto la construcción. También puede ejecutar su conjunto de pruebas automatizadas contra la compilación, así como ejecutar cualquier tipo de herramientas para obtener métricas y demás.

Obviamente, esto es muy valioso cuando tienes un equipo de comprometidos, no todos son diligentes para verificar si hay cambios. Como desarrollador solo, no es tan valioso. Es de suponer que ejecute las pruebas unitarias e incluso las pruebas de integración. Sin embargo, he visto varias ocasiones en las que el desarrollador se olvida de registrar un archivo de un conjunto.

La construcción de CI también se puede considerar como tu versión de "lanzamiento". El entorno debe ser estable y no verse afectado por el artefacto de desarrollo que acaba de agregar a su máquina. Debería permitirle reproducir siempre una compilación. Esto puede ser valioso si agrega una nueva dependencia a su proyecto y se olvida de configurar el entorno de compilación de lanzamiento para tener eso en cuenta.


El concepto básico de CI es que tiene un sistema que crea el código y ejecuta pruebas automatizadas cada vez que alguien se compromete con el sistema de control de versiones. Estas pruebas incluirían pruebas unitarias y funcionales, o incluso pruebas basadas en el comportamiento.

El beneficio es que usted sabe, de inmediato, cuando alguien ha roto la construcción. Esto significa que A) Comprometieron un código que impide la compilación, lo que arruinaría a uno que hizo una ''actualización'', o B) Compusieron un código que rompió algunas pruebas, lo que significa que introdujeron un error que debe corregirse, o las pruebas deben actualizarse para reflejar el cambio en el código.

Si eres un desarrollador solo, CI no es tan útil si tienes la buena costumbre de ejecutar tus pruebas antes de una confirmación, que es lo que deberías hacer. Dicho esto, podría desarrollar un mal hábito de dejar que CI haga sus pruebas por usted.

Como programador en solitario, se trata principalmente de la disciplina. Usar CI es una habilidad útil, pero debes evitar desarrollar malos hábitos que no se traduzcan en un ambiente de equipo.


Si necesita soportar múltiples compiladores, entonces es útil tener un sistema de compilación CI para hacer todo eso mientras desarrolla en un IDE. Mi código se construye con Vc6 a VS2008 en x86 y x64 en VS2005 y 8, así que eso es 7 compilaciones por proyecto por configuración de proyecto ... Tener un sistema de CI significa que puedo desarrollar en un IDE y dejar que el sistema de IC pruebe que todos los compiladores que yo apoyo todavía construyen.

Del mismo modo, si está creando librerías que son utilizadas por múltiples proyectos, entonces CI se asegurará de que funcionen con TODOS los proyectos en lugar de solo con el que está trabajando en este momento ...


Usamos nuestro sistema de CI para hacer compilaciones de Release (así como también las compilaciones automáticas "on-commit" habituales).

Poder hacer clic en un botón que inicia una compilación de versión que recorre todos los procesos para lanzar una configuración es:

  • rápido (puedo continuar con otras cosas, y se ejecuta en una máquina separada para que no me frene);
  • repetitivo (no se olvida de nada, incluida la copia de la configuración en la carpeta de lanzamiento y notificando a todos los que necesitan saber)
  • confiable (sin errores, a diferencia de un humano!).

En un entorno Agile, donde espera entregar software en funcionamiento cada 2-4 semanas, definitivamente vale la pena tenerlo, incluso en un equipo de 1.


Como otras personas han notado, CI tiene ventajas para un desarrollador en solitario. Pero la pregunta que debes hacerte es; ¿Vale la pena la sobrecarga? Si eres como yo, probablemente lleve una o dos horas configurar un sistema de CI para un proyecto, solo porque tendré que asignar un servidor, configurar todas las redes e instalar el software. Recuerde que el sistema de CI solo le ahorrará unos segundos a la vez. Para un desarrollador solo, estos tiempos probablemente no sumen más que el tiempo que le tomó hacer la configuración de CI.

Sin embargo, si nunca antes has configurado un sistema de IC, te recomiendo hacerlo solo por el bien de aprender a hacerlo. No lleva tanto tiempo que no valga la pena la experiencia de aprendizaje.


La verdad es que la integración continua tiene más sentido en los equipos. Los desarrolladores individuales también pueden obtener algunas ventajas, debe decidir usted mismo si son suficientes para contrarrestar el tiempo invertido en la configuración de un sistema CI.

  • Si olvidó registrar algún archivo necesario, el repositorio contiene una versión defectuosa, incluso si funciona en su máquina. CI detectaría ese caso.
  • Si su servidor CI se ejecuta en una máquina diferente, puede indicar dependencias en su entorno de compilación. Significa que la compilación y todas las pruebas pueden funcionar en su dev-box, pero en otra máquina algunas dependencias no se cumplen y la compilación se rompe.
  • Las compilaciones diarias pueden indicar que su software anterior no funciona con la última actualización del sistema operativo / compilador / biblioteca ...
  • Si su sistema CI tiene un archivo de artefactos de construcción, puede obtener fácilmente una distribución de una versión anterior de su software.
  • Algunos CI tienen una interfaz agradable para mostrar las métricas sobre su compilación, tienen enlaces a documentación generada automáticamente y cosas por el estilo.