¿Es importante la integración continua para un desarrollador en solitario?


Nunca he usado herramientas de CI antes, pero por lo que he leído, no estoy seguro de que proporcionaría ningú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 debe usar IC? Beneficia a todos los desarrolladores?

Author: Joel Coehoorn, 2008-09-25

7 answers

El concepto básico de CI es que usted tiene un sistema que construye el código y ejecuta pruebas automatizadas cada vez que alguien hace un commit al sistema de control de versiones. Estas pruebas incluirían pruebas unitarias y funcionales, o incluso pruebas de comportamiento.

El beneficio es que usted sabe - inmediatamente - cuando alguien ha roto la construcción. Esto significa Que, a) compromiso de código que impide la recopilación que el tornillo de uno que hizo un 'update', o B) Se comprometieron código que se 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 en solitario, CI no es bastante tan útil si tienes un buen hábito de ejecutar tus pruebas antes de un commit, que es lo que deberías estar haciendo. Dicho esto, podría desarrollar un mal hábito de dejar que el CI haga sus pruebas por usted.

Como programador en solitario, se reduce principalmente a la disciplina. Utilizar La CI es una habilidad útil, pero debes evitar desarrollar malos hábitos que no se traduzcan en un entorno de equipo.

 68
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 23:35:17

Como otras personas han señalado, CI tiene ventajas para un desarrollador en solitario. Pero la pregunta que tienes que hacerte es: ¿vale la pena la sobrecarga? Si eres como yo, probablemente tomará 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 en solitario, es probable que estos tiempos no se sumen a más que el tiempo que tomó hacer la configuración del CI.

Sin embargo, si nunca ha configurado un sistema de CI antes, le recomiendo hacerlo solo por el bien de aprender a hacerlo. No toma tanto tiempo que no vale la pena la experiencia de aprendizaje.

 14
Author: Imagist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-17 13:37:59

El beneficio de CI radica en la capacidad de descubrir temprano cuando un check in 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 darle métricas y cosas así.

Obviamente, esto es muy valioso cuando usted tiene un equipo de commiters, no todos de los cuales son diligentes para comprobar los cambios importantes. Como desarrollador en solitario, no es tan valioso. Presumiblemente, usted ejecuta sus pruebas unitarias, e incluso tal vez pruebas de integración. Sin embargo, he visto una serie de ocasiones en las que el desarrollador se olvida de comprobar un archivo de un conjunto.

La compilación CI también se puede considerar como su compilación "release". El entorno debe ser estable y no debe verse afectado por el aparatito 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 la versión para tenerlo en cuenta.

 10
Author: Benoit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 23:45:14

Si necesita soportar múltiples compiladores, entonces es útil tener un sistema de compilación de CI para hacer todo eso mientras solo desarrolla en un IDE. Mi código se construye con Vc6 hasta VS2008 en x86 y x64 se construye en VS2005 y 8, por lo que son 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 CI demuestre que todos los compiladores que apoyo aún construyen.

Del mismo modo, si está construyendo libs que son utilizadas por varios proyectos luego, CI se asegurará de que trabajen con TODOS los proyectos en lugar de solo con el que estás trabajando en este momento...

 6
Author: Len Holgate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-23 19:50:50

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

  • Si olvidó revisar algún archivo necesario, el repositorio contiene una versión rota, incluso si funciona en su máquina. CI detectaría ese caso.
  • Si su CI-server se ejecuta en una máquina diferente, puede indicar dependencias en su entorno de construcció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 actualización más reciente del sistema operativo/compiler/library...
  • Si su CI-system 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 mostrarle métricas sobre su compilación, tener enlaces a documentación generada automáticamente y cosas por el estilo.
 6
Author: Mnementh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-17 13:29:04

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

Ser capaz de hacer clic en un botón que inicia una compilación de lanzamiento que recorre todos los procesos para liberar una configuración es:

  • rápido (puedo seguir recto con otras cosas, y se ejecuta en una máquina separada por lo que no me está ralentizando);
  • repetitivo (no olvida nada, incluyendo copiar la configuración a la carpeta de lanzamiento y notificar a todos los que lo necesiten saber)
  • confiable (sin errores, a diferencia de un humano!).

En un entorno Ágil, donde se espera entregar software de trabajo cada 2-4 semanas, esto es definitivamente vale la pena tener, incluso en un equipo de 1.

 5
Author: David White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-23 20:06:40

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

 2
Author: Brad Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 23:34:01