Guía de Nova Flow - novaDepto/Nova GitHub Wiki

Responsables

Nombre Rol
Juan Alcántara Dueño de la guía
Peter González Autor
Juan Alcántara Autor

Objetivo

Guiar sobre el uso de control de versiones a través del flujo denominado: NovaFlow

¿Qué es NovaFlow?

novaflow

Es un modelo de manejo de ramas ideado para el departamento de Nova donde se busca la simplicidad, eficacia y orden.

Está inspirado por los modelos de Driessen (GitFlow) y por los del equipo inicial de GitHub (GitHub Flow). La combinación de lo positivos de ambos modelos nos permite tener un flujo de trabajo donde se confía en el equipo sin poner en riesgo la calidad del producto final.

Ramas

Permanentes

master

En esta rama sólo debe existir el código que está listo para ser lanzado a producción. La idea es tener una rama que ya haya pasado por todo el flujo de pruebas y que además fue validada por los stakeholders. NO SE PERMITEN CONTRIBUCIONES DIRECTAS en esta rama. Todas las contribuciones se deben agregar a través de Pull Requests con aprobación de otros miembros del equipo.

A partir de esta rama van salir los despliegues a producción aplicando herramientas de CI/CD.

staging

En esta rama va a estar todo el trabajo que está en proceso. NO SE REALIZAN COMMITS DIRECTOS sobre la rama, sino que se van integrando las ramas temporales. La idea de esta rama es poder correr pruebas unitarias automatizadas para verificar que no se rompió alguna funcionalidad cuando se integra el código.

Cuando se crea un Pull Request hacia staging, se van a correr pruebas y es responsabilidad de quien haga ese Pull Request avisar del defecto y de liderear el esfuerzo para repararlo. No es necesario la aprobación de otro integrante del equipo para completar el Pull Request, el mismo developer tiene la autorización para completarlo él mismo.

De esta rama es que van a surgir los Pull Requests hacia master. Estos Pull Requests tienen que pasar la validación de stakeholder antes de aprobarse la integración.

Temporales

*/branch
Prefijo Descripción Ejemplo
setup Esta rama es utilizada para hacer modificaciones al ambiente de desarrollo. setup/django
feature Esta rama es utilizada para el desarrollo de las user stories o features de la aplicación. Es importante poner el nombre o id de la user story para identificar el propósito de la rama. feature/login_facebook
fix Esta rama es utilizada para arreglar errores en el código que rompen la aplicación. Por ejemplo: devuelve un error 404 cuando debería regresar un error 500. fix/login_facebook
refactor Esta rama es utilizada para cambiar y mejorar la lógica utilizada en un feature. Generalmente estos cambios son necesarios después de la validación de usabilidad con el cliente. refactor/login_facebook
docs Esta rama es utilizada para la subida o modificación de documentos en el repositorio. docs/readme

¿Por qué NovaFlow?

Continuous Deployment

La definición de las ramas permanentes nos indica en los momentos en los que se realizan las pruebas automatizadas y el despliegue a los diferentes ambientes de producción. Al pasar por varios puntos de validación, se asegura que el código y la funcionalidad que llegan al usuario final se encuentran sin errores.

Métricas

Utilizar este modelo de manejo de ramas puede ser utilizado para un análisis más profundo. Al mantener un estándar se puede automatizar la extracción de información para el análisis de nuestro progreso y mejora en la calidad del código.

Ejemplo: Medición de eficiencia de Pair Programming

User story Integrantes Pair programming Cantidad de commits Cantidad de bugs Tiempo dedicado Tiempo bugs
1 Peter, Juan 12 6 04:15:12 00:20:54
2 Peter, Juan 11 3 03:24:12 00:16:20

versión 2.0