¿Qué se considera exactamente "romper la construcción"?

En un entorno de CI, ¿qué se considera exactamente una compilation rota?

Hay varias respuestas que puedo imaginar (cualquier combinación de comstackciones, testings aprobadas, métricas dentro del range, documentation existente, etc.), pero no estoy seguro de cuáles de estas son cannonciales.

Por ejemplo, hoy me sucedió que en realidad revisé todos los cambios de código pero me olvidé de confirmar el file de proyecto de Visual Studio, rompiendo así las testings unitarias. (Aunque literalmente comprobé tres veces mi confirmación, ya que es un proyecto público de OSS en el código de Google).

Pude arreglar esto fácilmente en less de un minuto después de mi primer compromiso, pero ¿debería considerarme ahora un constructor de compilation?

¿Cómo se configura su entorno de CI: se construye cada revisión o solo la versión más nueva después de cada compilation completa, o se usa la verificación basada en el time para nuevas revoluciones?

Idealmente, tienes

  1. script automatizado que está progtwigdo para ejecutarse cada noche para comstackr la aplicación desde el código fuente.

  2. Scripts para copyr los binarys en un directory / set de directorys desde el cual se puede ejecutar otro script para implementar la aplicación si se está ejecutando en su entorno, o se puede usar para crear entregables para un cliente.

  3. El set automatizado de testings que ejecuta y verifica todos los componentes pasa todas las testings.

  4. Script automatizado que verifica que la construcción se haya construido correctamente.

  5. Sistema automatizado de script / monitoreo que envía una alerta si el script de verificación falla.

Cuando se genera una alerta por el process anterior, se considera "romper la compilation".

Pero dado que los procedimientos / processs pueden variar de una compañía a otra, puede haber definiciones alternativas. En algunos lugares, puede estar rompiendo las testings unitarias. Otros puede estar comprobando el código fuente que hace que el código no pueda comstackrse.

Romper la compilation compromete los cambios que hacen que sea imposible (o posible pero no inteligente) implementar el proyecto.

La reparación de una compilation interrumpida no repara la compilation rota, pero hace posible crear una compilation nueva no rota.

Configuré mi server CI para crear una compilation mínima en cada confirmación y crear una compilation máxima cada período de time. El período depende de la cantidad de personas que trabajen en el proyecto (más personas se comprometen más) y la duración de la compilation (Puede ejecutar su set de testings de unidad cada vez, pero el set de testing de aceptación de 30 minutos una o dos veces al día).

Romper una construcción impide que cualquier usuario que dependa de las mismas herramientas estándar y un set de códigos que su entorno de CI obtenga un sistema de compilation y ejecución.

Si sus compañeros de trabajo no pueden comstackr el sistema cuando están actualizados, debido a que falta una configuration, la compilation está rota, ¿no es así?

Si tus compañeros de trabajo no pueden estar seguros de que las testings unitarias pasan, porque una de ellas es escamosa, la construcción está rota, ¿no?

Si ha automatizado las testings de performance, y su proyecto debe ser optimizado, iré tan lejos como para decir que si el código no se ejecuta lo suficientemente rápido, ha roto la compilation (pero eso es discutible)

No me importaría tanto la cobertura del código ni otras métricas, por ejemplo.

Romper la construcción puede suceder. CI está allí para asegurarse de que no ocurra demasiado el día en que se supone que debe enviarse;)

para nosotros, usamos el término "romper la compilation" cada vez que falla el set de testings después de un nuevo compromiso.

entonces, en su caso, sí, habría roto la compilation (según nuestra compañía al less)

Siempre que rompas la construcción debido a un simple error humano (como olvidar el compromiso de algo) y siempre que esto sea una exception y no la regla, diría que está bien. Siempre y cuando te encargues de arreglar esto rápidamente 🙂

Por otro lado, si alguien rompe las construcciones regularmente al no ejecutar la construcción completa localmente en su máquina antes de comprometerse, entonces esta es una señal de un miembro del equipo no disciplinado que realmente no se preocupa por otros miembros del equipo. y para el process de desarrollo.

Mi experiencia es que una manera efectiva de hacer que las personas sean más cuidadosas es configurar su server de CI para enviar un correo electrónico cuando ( y solo cuando ) el estado de la compilation cambia, con el "culpable" en la list A: y el rest del equipo en el Cc :. Supongo que puedes llamarlo un "factor de vergüenza";)

Una compilation rota es cualquier cosa que no pase el set de testings automatizadas.

Eres un rompeviroutes. 😉 Eso no es realmente un gran problema, siempre y cuando lo solucione rápido. El objective de un entorno de CI es detectar errores, no hacer que las personas teman comprometerse.

Mi compañía construye la punta de cada twig que está en producción o próxima para la producción. Hacemos esto en cada compromiso y cada día a las 4 a. M. Estamos utilizando Mercurial, por lo que comprometerse aquí significa impulsar cambios en el repository de integración.