GitFlow: Probando apropiadamente las twigs de lanzamiento y el maestro

He estado buscando un buen model de ramificación en git y he descubierto que GitFlow se adapta muy bien a nuestro entorno de desarrollo. Sin embargo, una pregunta pendiente es cómo y dónde probar nuestros lanzamientos.

Las twigs de versión suenan como un lugar para ejecutar todas las testings de regresión antes del lanzamiento. Sin embargo, las twigs de lanzamiento se fusionan en master, se labeln, y eso es lo que finalmente sale a producción. ¿Qué sucede si hay conflictos de fusión de la twig de publicación a la maestra? Suena como que el maestro debe ser completamente probado nuevamente (lo que podría ser costoso). Incluso si no hay conflictos, ¿es seguro simplemente impulsar esa fusión a la producción, o existe la necesidad de realizar testings adicionales de humo básicas?

Después de rastrear cuidadosamente el diagtwig de GitFlow , me convencí a mí mismo de que nunca debería haber conflictos al fusionarme en el maestro (es decir, si el process se sigue estrictamente). La razón es debido a la línea de time:

  1. Desarrollar twig se crea desde el Maestro
  2. Las características están comprometidas en la twig Desarrollar
  3. Se creó la twig de versión (que incluye todas las confirmaciones de Develop hasta el momento)
  4. Los errores se arreglan en la twig de Liberación
  5. Cuando esté listo, la twig Release se fusionará en Master
  6. El maestro debe contener todas las confirmaciones de las twigs Desarrollo de versión. Los conflictos no deberían ocurrir porque no se hizo nada en la twig Maestra después de la creación se creó (esa es la única forma en que los conflictos podrían suceder). Además, el código en este punto debe ser idéntico al último compromiso en la twig de Liberación, lo que significa que no es necesario realizar testings adicionales.

Simplifiqué el diagtwig de GitFlow para convencerme de esto:

enter image description here

Creo que las testings se deben hacer en cada etapa de la publicación. Cree un subset ligero de testings de lanzamiento que pueda ejecutar directamente contra la producción para al less probar la funcionalidad básica. No cargue / pruebe la testing contra la producción, por supuesto.

Dependiendo de cuál sea su producto y cómo lo saque, las testings reales pueden cambiar. Tenemos algunos serveres de producción a los cuales implementamos un nuevo código de lanzamiento. Esos serveres se testingn a background, pero nuestros clientes no los pueden acceder. Cuando esos check out, los intercambiamos con el rest de nuestros serveres de producción. El deployment y la testing se repiten. Una vez que todo sucede, todos los serveres de producción se vuelven a poner en el grupo activo de serveres orientados al cliente.

En caso de falla, retrocedemos de la misma manera.