Después de una breve contemplación, sugeriría que incluso podría ser más importante para un desarrollador en solitario que para un equipo.
En el nivel más básico, un servidor de CI demuestra que puede construir su aplicación desde cero desde una fuente comprometida; combinada con un conjunto decente de pruebas, debería demostrar que puede construir y ejecutar desde cero.
Dado que una de las cosas que intento hacer es asegurarme de que mi compilación incluya un paquete desplegable, también sabe que puede obtener algo para implementar (limpio y desde un estado / versión conocido).
De hecho, ahora, cuando haga File | New Project, probablemente debería incluir crear o agregar a su repositorio y configurar su script de compilación de CI y la configuración de implementación (incluso si eso es solo para comprimir un montón de cosas para la implementación de xcopy)
Anexo (2016): hoy en día mi sistema de CI también será una parte integral de mi proceso de implementación, por lo que su valor ha aumentado y no ejecutaré ningún proyecto entregable sin él. La implementación automatizada de botones elimina mucho estrés del proceso y, de alguna manera, dar forma o formar un servidor de compilación es parte integral de eso.
Cuando soy el único que se compromete, solo construyo y pruebo antes de comprometerme realmente. Usualmente uso un objetivo makefile como:
Eso configura, construye, ejecuta todas las pruebas (consciente de valgrind), ejecuta pelusas, etc. Como sé que seré el único que empuja, realmente no necesito el poder de algo como Hudson.
Además, en un entorno en el que hay varias ramas que alimentan un repositorio principal, si todos siguen el tirón siempre antes de comprometerse o presionar, el servidor de CI podría estar un poco exagerado. Una regla bien escrita de que el autor de lo que rompió la última compilación compra pizza el viernes generalmente mantiene las cosas funcionando sin problemas :)
Si llega a una situación en la que un proyecto está claramente dividido en subsistemas que tienen sus propios líderes, realmente debe contemplar el uso de algo como Hudson. Alguien puede realizar pruebas locales, perder una carrera con otro subsistema y terminar empujando algo tóxico.
Además, si está manteniendo una bifurcación de un proyecto de rápido movimiento (por ejemplo, su propio conjunto de parches para el kernel de Linux), debería considerar usar algo como Hudson, aunque esté 'solo' en ese proyecto. Esto es especialmente cierto si se bifurca / re-basa directamente desde la línea principal.
fuente
make: don't know how to make sense. Stop
. Argh!No diría que esto es solo una buena ventaja, diría que es vital para la ingeniería de software de alta calidad para nosotros, los artistas en solitario. La mayoría de nosotros dejaremos que sus estándares de calidad se desvanezcan un poco si tienen prisa si piensan que es bastante fácil de arreglar más tarde. Si confirma software en ese estado, esencialmente tiene una base de código inútil almacenada en su control de origen.
Si se cumple correctamente (es decir, no se saltea las pruebas y se asegura de que se desarrolle cada vez que se compromete), CI lo obliga a cumplir con un estándar de calidad más alto de lo que lo haría si lo hiciera de todos modos.
fuente
Es importante si desea reducir su tiempo de espera para ver si todo sigue yendo bien. Aunque puede hacer que su IDE compile cosas para usted tan pronto como guarde, no ejecuta automáticamente pruebas unitarias, por lo que mi servidor de CI ejecuta las pruebas unitarias y los informes de cobertura de casos de prueba y otros análisis de calidad de mi código tan pronto Lo empujo
El único desencadenante que tengo que hacer es empujar mis cambios actuales al control de versiones y puedo volver a la codificación. Y mientras estoy pensando en la codificación, el sistema de CI está ocupado haciendo los largos informes de calidad que miraré de vez en cuando cuando mi cerebro se detenga.
Tengo una máquina VMWare separada en la misma computadora portátil que hace las compilaciones para el código que introduzco. Para hacer esto, solo obtengo una imagen de Linux VMWare llave en mano e instalo jenkins usando apt-get y hago algunos cambios menores de configuración.
fuente