2010-07-20 15 views
16

Cuando comencé a construir un servidor de integración continua, me encontré con la afirmación "Es malo romper la compilación [del código]". Después de terminar ese proyecto llegué a la conclusión de queRompiendo la compilación, ¿Por qué es algo malo?

  1. "Rompiendo la construcción." era una frase pegadiza que se estaba lanzando mucho debido a la aliteración, o
  2. No entendía un elemento clave de la integración continua.

Así que mi pregunta está en el espíritu de # 2: ¿por qué es malo romper la construcción?

+0

típicamente romper cualquier cosa es malo, aparte de 'irrumpir en la actividad', etc. – kenny

+8

Si "rompe la compilación", ya no tiene un sistema en funcionamiento, que es una especie de punto de integración continua. ¿Cómo puede eso * no * ser malo? – MJB

Respuesta

19

Porque si otras personas verifican sus cambios rotos, no podrán funcionar, o si lo hacen lo harán de manera menos eficiente.

También significa que no está probando adecuadamente los cambios antes de comprometerse, lo cual es clave en CI.

+0

Entonces, ¿significa que hay un código que no compila el compromiso con el repositorio de origen? – Achilles

+1

Derecha. "Romper la compilación" se refiere, por lo general, a un código que no ha probado y que luego no compila (o falla espectacularmente) y evita que sus compañeros de trabajo ... ya saben, que trabajan :) – rfunduk

+0

Esa es la aplicación más directa. En la aplicación más extrema, sería cualquier cambio que introduzca un error. Diría que los dos usos más comunes son 1 - hace que no compile, o 2 - causa un error significativo que inhibe el trabajo de otras personas. Obviamente, no siempre podrás cometer errores (¡oh chico si pudieras!), Pero debes asegurarte de que tus cambios no impidan que aparezcan los menús, que aparezcan muchos mensajes de error y, desde luego, no causar errores de compilación (La mayoría de los errores de compilación en checkins ocurren cuando se olvida uno de los archivos para registrarse, por cierto). – corsiKa

0

Porque significa que alguien ha hecho algo malo (o al menos, algunos cambios han chocado) y ya no puede construir e implementar su sistema.

4

Rompe la construcción como me sucedió ayer. Cuando tus compañeros de equipo intentan usar el código fuente. No construirá Por lo tanto, lucharán para probar el trabajo que están haciendo. Se pone peor cuanto más grande es tu equipo.

1

Una vez que las compilaciones comienzan a fallar, la gente se muestra reacia a obtener los últimos cambios, y usted comienza la espiral mortal hacia la integración de Big Bang de los cambios.

0

Romper la compilación significa que ha enviado un código a un repositorio compartido que (a) no compila o (b) no funciona (falla las pruebas unitarias). Cualquier otra persona que se esté desarrollando a partir de ese repositorio compartido tendrá que lidiar con el código roto que ha cometido hasta que se solucione. Eso causará una pérdida de productividad para todo el equipo.

11

De Martin Fowler http://martinfowler.com/articles/continuousIntegration.html

El punto de trabajar con IC del conjunto es que siempre está en desarrollo sobre una base estable conocido . No es una mala cosa que se rompa la construcción de la línea principal, aunque si está ocurriendo todo el tiempo sugiere que las personas no están siendo teniendo cuidado de actualizar y compilando localmente antes de una confirmación. Cuando se rompe la compilación principal, , sin embargo, es importante que obtenga fijo rápidamente.

+3

+1 para Martin Fowler – corsiKa

1

Rompiendo la acumulación tiene consecuencias nefastas para la programación del proyecto (y la presión arterial de compañeros de equipo) => Otros promotores que a continuación, obtener la última versión ya no se puede construir allí propios cambios, lo que retrasa los => Continuo la integración se interrumpirá, lo que significa que las pruebas formales pueden demorarse

Muchas herramientas de control de versiones (por ejemplo, TFS) pueden evitar que los desarrolladores ingresen código que no compila o pasa pruebas de análisis de unidades o códigos.

1

No creo que romper la compilación sea necesariamente algo malo, siempre y cuando exista una rama o etiqueta de trabajo bien conocida en el repositorio.Dicho esto, cree su propia sucursal en el repositorio si sabe que su código va a romper la compilación hoy, pero lo arreglará la próxima semana. Luego, más tarde puedes fusionar de nuevo en el tronco.

+2

Tienes más razón, excepto que si estás creando tu propia sucursal, esa no es una integración continua, ¿o sí? – corsiKa

19

Tenga mucho cuidado al etiquetar "Romper la compilación" como algo malo. Es algo que necesita atención inmediata, pero también es una parte muy normal y esperada del ciclo de desarrollo. Esta es la razón por la cual la Integración Continua es muy útil: le dice de inmediato cuándo se rompe la construcción y qué cambio lo causó. Te ayuda a retomar el camino rápidamente.

Si su cultura penaliza "Rompiendo la construcción", entonces corre el peligro de cultivar un ambiente de trabajo tóxico. Una vez más, considérelo como algo que necesita atención inmediata, pero no lo etiquete como "malo".

+0

Me alegra que haya dicho eso. Mi comentario indudablemente implicaba que era "algo malo en general", a diferencia de "algo malo que debes intentar resolver cuando sucede". – MJB

5

Porque si otras personas de partida de los cambios, que no seré capaz de trabajar ... alt text Esta imagen tiene derechos de autor a Geek & empuje bajo un Creative Commons License

2

Sin duda, el punto central de la integración continua es identificar problemas temprano. Se requieren controles diarios o más frecuentes para reducir los conflictos a un tamaño manejable.

Debe obtener una copia actualizada del repositorio y compilar localmente. Esto le dirá si su cheque propuesto romperá la construcción. Usted resuelve cualquier problema y luego lo registra.

De esta manera, los problemas de integración se mantienen localmente y son fáciles de solucionar.

Cuestiones relacionadas