Desarrollar el process de automation

Esto se refiere a las mejores prácticas relacionadas con la creación de aplicaciones. Estamos siguiendo el principio de desarrollo de gitflow. Usamos bambú para build pero eso realmente no importa. Mi pregunta es, ¿es generalmente mejor tener comstackciones progtwigdas o comstackciones automáticas o comstackciones manuales? Personalmente creo que las comstackciones automáticas o manuales son el path a seguir y este es el motivo.

Las comstackciones automatizadas sondearán una twig en particular (muy probablemente la twig de desarrollo) y cuando detecte un cambio iniciará una compilation. Esto es genial porque siempre creas una compilation cuando hay un nuevo código para comstackr. El lado malo es que si tienes un equipo de 5 y todos fusionan su twig de características para desarrollarse 1 minuto después, tendrás 5 comstackciones diferentes.

Lo que me lleva a pensar por qué creo que las comstackciones manuales son las mejores. Una vez que tenga los cambios de todos, puede comenzar una compilation. Esto mantendrá pequeña la cantidad de construcciones.

¿Qué piensa SO sobre las opciones? ¿Cuál es la práctica estándar de la industria para un equipo eficiente de CI / CD?

Creo que cualquier opinión sobre cómo administrar comstackciones depende de lo que valoras en tu process y eso no está claro en tu pregunta.

Como un aparte; la mayoría de los sistemas de compilation no requieren una compilation distinta para cada compromiso. Si tiene múltiples compromisos para el desarrollo dentro de su intervalo de sondeo, debería poder probarlos / implementarlos todos como una compilation. Esto podría ser bueno o malo para ti.

Integración continua

La continuous integration debería proporcionarle un process de desarrollo más fluido y rápido con la garantía de que su proyecto se encuentra en un estado liberable (o al less superando sus propias testings, ojalá sea lo mismo). Descubrí que las construcciones manuales rutinariamente no hacen cumplir el mismo nivel de calidad. Es muy fácil cometer cambios bruscos "sabiendo" que se solucionará antes de la próxima compilation manual, que luego comienza a deslizarse cada vez más lejos o cuando falla una compilation, de repente no está claro cuál de los varios cambios introdujo la falla. Para una continuous integration, no solo esperaría build de forma automatizada su twig de desarrollo, sino también las comstackciones automatizadas de cada twig de características que demuestren que pasan sus testings antes de que se fusionen en el desarrollo.

En muchos entornos es posible que el costo de una construcción de CI sea insignificante en comparación con el costo del time del equipo de desarrollo. Por ejemplo, actualmente estoy buscando un proyecto con un promedio de 5 committers activos y solo 12 builds por día en los últimos 4 años aproximadamente. Mantener las testings rápidas y confiables no es fácil, pero se deben ejecutar muchas comstackciones (al mismo time en el caso de las twigs de características).

Existen entornos en los que el process de testing de una construcción no puede ser barato o rápido, por ejemplo, necesita ejecutar testings de hardware o testings de performance que demoran horas. En esos casos, necesita un enfoque diferente, pero probablemente tampoco pueda practicar la continuous integration y su estrategia de desarrollo / ramificación debería reflejar eso.

Entrega continua

La entrega continua va un paso más allá y acorta el time del ciclo desde el desarrollo hasta los cambios que llegan a los usuarios mediante la implementación de todas esas versiones liberables. Si hay un paso manual en el process de liberar (o deshacer) esas comstackciones, entonces no creo que deba llamar a su process "entrega continua".

Puede tener un process de implementación automatizado muy agradable sin que sea continuo. La entrega continua puede ser muy valiosa para algunos productos, pero también puede ser perjudicial y no ser adecuada para otros. Por ejemplo, actualmente implementamos continuamente en una aplicación web orientada al consumidor. También mantenemos herramientas de operaciones de backend donde somos más conservadores sobre cuándo lanzar (o al less cuándo habilitar nuevas características) ya que los cambios en esas herramientas pueden introducir nuevos flujos de trabajo que no queremos que aparezcan en el medio del turno de alguien sin previo aviso. .

tl; dr

Automatice todo, no disminuya la velocidad de su equipo tratando de mantener el número de comstackciones pequeñas.