Mantener las twigs sincronizadas con implementaciones frecuentes

En mi compañía, tenemos un requisito para implementar cada vez que una twig de características está list para entrar en funcionamiento, sin esperas. Para este propósito, he llegado con este process dev / gitflow:

Nuestro proceso de desarrollo

El process funcionará así:

  1. Un desarrollador se bifurca de la twig "liberar" y trabaja en la twig de características.
  2. Mientras trabaja, el desarrollador puede hacer una testing local en el desarrollo mediante la fusión en él. Es como una puesta en escena, pero la QA no toca este entorno.
  3. Cuando el desarrollador testing localmente y completa el trabajo, lo fusionan en nuestra twig de staging y emiten una Solicitud de extracción en la twig de release . [Línea verde n.º 1]
  4. Una vez en la twig de staging , el server de transición se actualiza automáticamente y las testings de QA. [Línea verde n.º 2]
  5. Si QA lo atesting, aceptan la request de extracción y todo lo que se ha probado ahora debe estar en la twig de release . [Línea verde punteada]
  6. Tan pronto como la twig de release obtiene un cambio, lo fusionamos en la twig master (Producción) y realizamos una implementación.
  7. Mi pregunta: Después de implementar en producción, ¿fusionaríamos la production nuevo en staging y dev ? [Líneas rojas]

Mi preocupación es que este process causaría muchos conflictos de código al fusionar la production hacia abajo. Especialmente si tenemos cosas en escena que se están moviendo de QA -> dev -> QA una y otra vez.

Hay mucho ruido en este flujo y mi preocupación es que es demasiado complicado lo que Git Flow nominalmente logra. Mi consejo en general es simplificar este flujo tanto como sea posible; si necesita una twig separada de "etapas", créela, pero en general:

  • El código listo para producción está en master.
  • Los desarrolladores basan el trabajo fuera del maestro. Pueden probar su twig de características localmente , y si no pueden, eso es algo que debe arreglarse más pronto que tarde.
  • Las twigs de características que requieren testings de control de calidad son empujadas a la puesta en escena. Idealmente, aquí solo existe una característica a la vez, a less que QA acepte manejar más.
  • Después de que la puesta en escena se testing satisfactoriamente, se fusiona con la maestra y se lanza a producción.

Dado que la probabilidad de que ocurran múltiples twigs de características que estén lists exactamente al mismo time es rara, simplificando el ciclo de lanzamiento de esta manera para que no exista ambigüedad con QA (ya que solo está probando la twig de una function a la vez) simplificar las cosas mucho.