Pregunta

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

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

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

¿Fue útil?

Solución

El concepto básico de CI es que tiene un sistema que construye 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, inmediatamente, cuando alguien ha roto la compilación. Esto significa A) Cometieron código que impide la compilación, lo que arruinaría a cualquiera que hiciera una 'actualización', o B) Cometieron código que rompió algunas pruebas, lo que significa que introdujeron un error que necesita ser reparado, o las pruebas deben actualizarse para reflejar el cambio en el código.

Si usted es un desarrollador en solitario, CI no es bastante tan útil si tiene la buena costumbre de ejecutar sus pruebas antes de una confirmación, que es lo que debe estar haciendo. Dicho esto, podrías desarrollar un mal hábito de dejar que el CI haga tus pruebas por ti.

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

Otros consejos

Como han notado otras personas, CI tiene ventajas para un desarrollador en solitario. Pero la pregunta que tienes que hacerte es; ¿Vale la pena la sobrecarga? Si es como yo, probablemente me 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 CI solo le ahorrará unos segundos a la vez. Para un desarrollador en solitario, es poco probable que estos tiempos sumen más que el tiempo que llevó realizar la configuración de CI.

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

El beneficio de CI radica en la capacidad de descubrir temprano cuando un registro ha roto la compilació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 tal.

Obviamente, esto es muy valioso cuando tienes un equipo de comisionados, no todos los cuales son diligentes para verificar los cambios importantes. Como desarrollador en solitario, no es tan valioso. Presumiblemente, ejecuta sus pruebas unitarias, e incluso quizás pruebas de integración. Sin embargo, he visto varias ocasiones en las que el desarrollador olvida registrar un archivo de un conjunto.

La compilación de CI también puede considerarse como su " lanzamiento " construir. El entorno debe ser estable y no verse afectado por ningún dispositivo de desarrollo que agregue 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 olvida configurar el entorno de compilación de la versión para tenerlo en cuenta.

Si necesita soportar múltiples compiladores, entonces es útil tener un sistema de compilación de CI para hacer todo eso mientras se desarrolla en un IDE. Mi código se construye con Vc6 a través de VS2008 en x86 y x64 en VS2005 & amp; 8, entonces 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 soporto todavía compilan.

Del mismo modo, si está creando libs 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 ...

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 que invierte en configurar un sistema de CI.

  • Si olvidó registrar algún archivo necesario, el repositorio contiene una versión dañada, 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 caja de desarrollo, pero en otra máquina no se cumplen algunas dependencias 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 / compilador / biblioteca ...
  • Si su sistema CI tiene un archivo de artefactos de compilació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, tienen enlaces a documentación generada automáticamente y cosas por el estilo.

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

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

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

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top