para cuando algo se comprometa a dominar
Por lo general, configuro mi CI para que se ejecute en cada confirmación individual. Las ramas no se fusionan en el maestro hasta que la rama se ha probado. Si confías en ejecutar pruebas en el maestro, se abrirá una ventana para que la compilación se rompa.
La ejecución de las pruebas en una máquina CI se trata de resultados reproducibles. Debido a que el servidor CI tiene un entorno limpio conocido extraído de su VCS, usted sabe que los resultados de las pruebas son correctos. Cuando se ejecuta localmente, podría olvidarse de cometer algún código necesario para que pasen o tener un código no confirmado que los haga pasar cuando deberían estar fallando.
También puede ahorrarle tiempo a los desarrolladores ejecutando diferentes suites en paralelo, especialmente si algunas son pruebas lentas de varios minutos que probablemente no se ejecutarán localmente después de cada cambio.
En mi trabajo actual, nuestra implementación de producción está habilitada en CI que pasa todas las pruebas. Los scripts de implementación evitarán la implementación a menos que se estén aprobando. Esto hace que sea imposible olvidarse de ejecutarlos accidentalmente.
El hecho de que CI sea parte del flujo de trabajo también supone una carga para los desarrolladores. Como desarrollador, ¿suele ejecutar una impresora, un analizador estático, una prueba de unidad, una cobertura de código y una prueba de integración para cada cambio único? CI puede, de forma completamente automática y sin necesidad de pensarlo, reduciendo la fatiga de la decisión.