Soy desarrollador de software en un equipo ágil bastante grande (tenemos ocho desarrolladores que realizan cambios activamente en un único repositorio de código). Cada dos semanas, llevamos a producción una nueva versión de nuestro software. Aquí está nuestro flujo de trabajo actual:
- Al comenzar una nueva tarea, los desarrolladores crean una "rama de características" fuera de la rama de desarrollo principal (usamos git ) y trabajan en esta nueva rama
- Una vez que un desarrollador ha terminado el trabajo en su tarea, fusionan su rama de características nuevamente en la rama de desarrollo
- El desarrollador fusiona la rama de desarrollo en la rama de QA.
- Se activa una compilación desde la rama de QA El resultado de esta compilación se implementa en nuestro entorno de control de calidad para permitir que los evaluadores comiencen sus pruebas.
Es bastante común que nuestros evaluadores encuentren problemas con estas nuevas características que se han fusionado en la rama de control de calidad. Esto significa que, en cualquier momento, el entorno de control de calidad probablemente contenga varias características nuevas, algunas probadas y libres de errores, y otras rotas. Esto dificulta la publicación porque es raro que la compilación de control de calidad esté en un estado listo para producción.
Para mitigar esto, hemos estado intentando iniciar un "congelamiento de QA", lo que significa que los desarrolladores no fusionan nuestra rama de desarrollo en la rama de QA un par de días antes del lanzamiento. Las correcciones de errores en el entorno de control de calidad se realizan directamente en la rama de control de calidad y se fusionan con la rama de desarrollo. Teóricamente, esto mantiene las características nuevas y rotas fuera del control de calidad y al mismo tiempo nos permite solucionar problemas que ya están en el control de calidad.
Si bien este concepto de "congelación de QA" ha sido parcialmente exitoso, es difícil de coordinar y las personas a menudo se confunden acerca de si se les permite fusionarse con QA. También ha sido difícil establecer una fecha límite de "congelación de control de calidad": a todos les gusta la idea de un respiro entre la congelación y el lanzamiento, pero en la práctica, prefieren tener su función en el próximo lanzamiento que respetar la fecha límite.
¿Hay una mejor manera de garantizar que tengamos una compilación limpia para nuestros lanzamientos cada dos semanas?