2008-09-24 18 views

Respuesta

68

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.

La ventaja 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 cualquiera que hiciera una 'actualización', o B) Cometieron 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 usted es un desarrollador en solitario, CI no es bastante tan útil si usted está en un buen hábito de correr sus pruebas antes de una confirmación, que es lo que debe estar haciendo. Dicho esto, podría desarrollar un mal hábito de dejar que CI haga sus pruebas por usted.

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

+5

Creo que CI también sería una buena red de seguridad para asegurarme de tener todo mi código en un VCS, de que todas las pruebas se ejecutan rutinariamente, etc. Esas son cosas que pueden deslizarse fácilmente si nadie más tiene que construir su código. –

+0

Matt, gracias por esta gran respuesta. – Animesh

+0

La configuración y el mantenimiento de un sistema de CI que funcione pueden tener su propio costo de tiempo. Cuando eres un desarrollador en solitario, vale la pena considerar este costo en comparación con los beneficios que obtienes. Me gustaría decir que solo me molesto con CI si tienes compilaciones de ejecución tan larga que es mejor hacer que la construcción se ejecute en una máquina separada. – fatuhoku

10

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 commiters, 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 su compilació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.

+0

¿No se encontraría el quebrantamiento mediante pruebas unitarias (u otro esquema de prueba)? –

+2

Se sorprenderá de la frecuencia con que un archivo no está registrado ... – Benoit

2

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

6

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 construcció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 un 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.
6

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

Del mismo modo, si usted está construyendo bibliotecas que son utilizados por múltiples proyectos a continuación, IC se asegurará de que trabajar con todos los proyectos en lugar de sólo la que se trabaja con este momento ...

5

Nosotros utilice nuestro sistema de CI para crear compilaciones de versiones (así como las compilaciones automáticas habituales "en proceso").

Ser capaz de hacer clic en un botón que inicia una versión de lanzamiento que los pasos a través de todos los procesos para lanzar un programa de instalación es:

  • rápida (puedo seguir recto con otras cosas, y se ejecuta en una máquina separada así que no me está frenando);
  • 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 (no hay errores, a diferencia de un humano!).

En un entorno ágil, donde se espera que la distribución de software de trabajo cada 2-4 semanas, esto es, sin duda vale la pena tener, incluso en un equipo de 1.

14

Como otros han señalado, 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 ha configurado un sistema de CI, le recomiendo que lo haga solo por el bien de aprender a hacerlo. No lleva tanto tiempo que no valga la pena la experiencia de aprendizaje.

Cuestiones relacionadas