software integración integracion implica etapa esquema desarrollo continua aws arquitectura continuous-integration

continuous-integration - integración - integracion continua pipeline



Múltiples ramas de características e integración continua. (6)

Ahora hay algunos buenos recursos que muestran cómo combinar CI y ramas de funciones. Bamboo o Feature Branch Notifier son algunas formas de mirar.

Y this es otro artículo bastante largo que muestra las ventajas de los llamados CI distribuidos. A continuación, un extracto explicando los beneficios:

El CI distribuido tiene la ventaja de la implementación continua, ya que mantiene una rama de línea principal limpia y estable que siempre se puede implementar en producción. Durante un proceso de IC centralizado, existirá una línea principal inestable si el código no se integra correctamente (construcción rota) o si hay trabajo sin terminar integrado. Esto funciona bastante bien con la planificación de la versión de iteración, pero crea un cuello de botella para la implementación continua. La línea directa de la rama del desarrollador a la Producción debe mantenerse limpia en un CD, Distributed CI lo hace solo permitiendo que el código Listo para la Producción se coloque en la Línea principal .

Una cosa que aún puede ser desafiante es mantener la compilación de la rama aislada para que no contamine su repositorio de binarios al empujar sus compilaciones de rama hacia ella. Bamboo parece abordar eso, pero no está seguro de que sea tan fácil con Jenkins.

He estado leyendo un poco acerca de la integración continua recientemente y hay un escenario que podría ocurrir y no entiendo cómo tratar adecuadamente.

Tenemos una rama de línea principal / troncal estable y creamos ramas para las características. Cada desarrollador mantendrá sus propias sucursales de características actualizadas mediante la combinación de troncales con sus sucursales de forma regular. Sin embargo, es completamente posible que se puedan crear y trabajar dos o más ramas de funciones durante un período de varias semanas o meses. En este tiempo se podrían desplegar muchas versiones del software. Esto donde surge mi confusión.

Es muy probable que los cambios para una rama de entidad causen conflictos de fusión con otras ramas de entidad. CI sugiere que debe fusionarse en el tronco al menos diariamente, lo que resolvería los conflictos rápidamente. Sin embargo, es posible que no desee combinar el código de la función en el tronco porque puede que no esté terminado o que no desee que esa función esté disponible en la próxima versión. Entonces, ¿cómo lidiar con este escenario y seguir los principios de CI de la integración diaria de códigos?


Creo que significan fusionar la línea principal con la rama de la función, no al revés. De esta manera, la rama de la característica no se desviará demasiado de la línea principal y se mantendrá en un estado fácilmente fusionable.

La gente de git hace lo mismo al rebasar las ramas de características en la parte superior de la rama maestra antes de enviar una característica.


En mi experiencia con CI, la forma en que debe mantener sus sucursales actualizadas con los cambios de la línea principal como otros han sugerido. Esto me ha estado trabajando para varios lanzamientos. Si está utilizando Subversion, asegúrese de fusionar con la habilitación del historial de combinación. De esta manera, cuando intente fusionar sus cambios en la línea, solo le gustará que combine los cambios de características en la línea, no intente resolver los conflictos que su característica pueda tener con la línea principal. Si está utilizando más VCS avanzado como git, la primera fusión será una rebase en la que la segunda será una fusión.

Existen herramientas que pueden ayudarlo a hacer las cosas más fácilmente, como esta Característica se ramifica con Bamboo


La idea que se explica con mayor detalle en este artículo es fusionar desde la rama troncal / versión a las ramas de entidades diariamente, pero solo fusionarse en la otra dirección una vez que una entidad cumpla con su definición de "hecho".

El código escrito por un equipo de características se insertará en el tronco una vez que esté completo y se ''distribuirá'' a los otros equipos, donde se pueden tratar los conflictos, como parte del proceso de combinación diaria.

Esto no va tan lejos como para satisfacer el deseo de Nick de contar con un sistema de control de versiones que pueda usarse como herramienta de respaldo, a menos que los cambios que se realicen sean lo suficientemente pequeños como para que puedan comprometerse con la rama de funciones dentro de un período de tiempo en el que el riesgo de perder tu trabajo es aceptable

Personalmente, no trato de reintegrar el código en la rama de lanzamiento antes de que se haga, y aunque realmente nunca lo he intentado, estoy seguro de que la creación de características para el trabajo sin terminar tiene sus propios problemas.


Las ramas de funciones se comprometen nuevamente en la línea principal, y OFTEN es una característica esencial de la integración continua. Para un desglose completo, vea este artículo


No hay ramas características en el CI adecuado. En su lugar, use la función alterna .