Proceso de Desarrollo
Para tener un trabajo fluido, es necesario seguir un proceso bien definido. En este bootcamp introduciremos prácticas básicas y normalmente usadas en el mercado.
Iniciando el desarrollo de una historia
En la planeación se presentará la épica, luego se planificarán todas las historias que componen esa épica, cada historia se dividirá en tareas (tareas técnicas para completar la historia), cada tarea se distribuirá a un miembro del equipo. Después de la planeación comienza el día a día del desarrollo, es importante seguir estos pasos para tener éxito en el desarrollo:
1. Apertura de la historia (Story Opening)
Antes de iniciar las actividades del sprint es importante que todos los miembros que van a realizar tareas de esa historia se reúnan en una llamada para discutir cómo cada uno va a resolver su tarea, es importante pasar por los siguientes pasos:
- Crear la rama de la historia siguiendo el patrón descrito abajo
- Revisar las documentaciones de arquitectura e ingeniería del sprint
- Hacer acuerdos de cómo van a integrar las partes que dependen una de la otra
- Intentar identificar las dependencias que una tarea tiene de la otra
- Decidir cuál es la mejor forma de gestionar las ramas de tarea para evitar conflictos de código
2. Desarrollando una tarea
- Entra en Jira y mueve la tarjeta de la tarea a "En Progreso"
- Crea la rama de la tarea basado en el patrón descrito abajo
- Desarrolla el código de la tarea
- Abre un Pull Request en Bitbucket de la tarea hacia la feature
task/123456-actividad-xpto -> feature/123456-registro-xpto - Espera la revisión de código de tu Tutor Tech Lead y de al menos uno de tus compañeros de equipo
- Verifica si la rama pasó en el pipeline de despliegue
- Finaliza el PR fusionando tu rama en la feature, no te olvides de eliminar tu rama para no acumular ramas muertas en el repositorio
3. Cierre de la historia (Story Closing)
Cuando todas las tareas de la historia sean finalmente fusionadas, realizar una nueva llamada con todos los miembros que realizaron tareas dentro de la historia para realizar los siguientes pasos:
- Crear el Pull Request de la rama feature hacia la rama main
feature/123456-registro-de-xpto -> main - Hacer una revisión de código colectiva y verificar si todo está correcto
- Resolver conflictos si los hubiera
- Validar y corregir los errores del pipeline si los hubiera
- Probar la funcionalidad para ver si está funcionando correctamente
- Fusionar la feature en main y eliminar la rama de la feature
- Crear la etiqueta que representa el incremento de versión del sistema usando semantic versioning
4. Corrección de Bugs (Bugfix)
Cuando se encuentra un problema (bug) o una implementación incorrecta de las reglas de negocio cuando el pull request de la feature está abierto (durante las pruebas de la feature en el Story Closing, por ejemplo), es necesario abrir una rama de bugfix bugfix/123456-correccion-boton-errado, corregir el problema y fusionar en la feature. Si la feature en cuestión ya ha sido fusionada en master, se necesita crear una rama de hotfix hotfix/123456-correccion-boton-errado. Solo el hotfix puede ser fusionado directamente en main; este es un caso que en proyectos reales es una corrección rápida de algo que está afectando la operación del sistema en producción.
Modelo de ramas de Git
Aquí hay un dibujo que representa el flujo y ciclo de vida de las ramas.
2. Estructura de Nomenclatura de las Ramas
2.1 Nomenclatura de las Ramas
- Historias de Usuario: Las ramas que representan historias de usuario deben ser nombradas como
feature/id_jira-nombre, dondeid_jiraes el identificador de la historia en Jira ynombrees una descripción breve de la funcionalidad. - Tareas: Las ramas relacionadas a tareas deben ser nombradas como
task/id_jira-nombre, dondeid_jiraes el identificador de la tarea en Jira ynombrees una descripción breve de la tarea. - Corrección de Bugs: Las ramas que involucran correcciones de bugs deben ser nombradas como
bugfix/id_jira-nombre, dondeid_jiraes el identificador del bug en Jira ynombrees una descripción breve de la corrección.
2.2 Ejemplo de Nomenclatura
- Historia de Usuario:
feature/JIRA-123-agregar-autenticacion(representando una historia en Jira con IDJIRA-123) - Tarea:
task/JIRA-456-agregar-validacion(representando una tarea en Jira con IDJIRA-456) - Corrección de Bug:
bugfix/JIRA-789-corregir-error-login(representando un bug en Jira con IDJIRA-789)
3. Flujo de Trabajo con Integración a Jira
-
Crear la Rama de Funcionalidad:
- Inicie desde la rama
mainy cree una nueva rama para la funcionalidad relacionada con la historia:git checkout main git checkout -b feature/JIRA-123-agregar-autenticacion
- Inicie desde la rama
-
Crear la Rama de Tarea:
- Dentro de la rama
feature/JIRA-123-agregar-autenticacion, cree una nueva rama para una tarea específica:git checkout -b task/JIRA-456-agregar-validacion
- Dentro de la rama
-
Desarrollar y Hacer Commit:
- Realice los cambios necesarios en la rama
task/JIRA-456-agregar-validaciony haga los commits:git add . git commit -m "Implementa la tarea JIRA-456: agregar validación"
- Realice los cambios necesarios en la rama
-
Crear un Pull Request:
- Después de concluir la tarea, haga push de la rama
task/JIRA-456-agregar-validacional repositorio remoto:git push origin task/JIRA-456-agregar-validacion - Acceda a Bitbucket y cree un pull request para fusionar la rama
task/JIRA-456-agregar-validacionen la ramafeature/JIRA-123-agregar-autenticacion.
- Después de concluir la tarea, haga push de la rama
-
Fusionar la Tarea de Vuelta a la Funcionalidad:
- Después de la revisión y aprobación del pull request, la rama
task/JIRA-456-agregar-validacionserá fusionada en la ramafeature/JIRA-123-agregar-autenticacion.
- Después de la revisión y aprobación del pull request, la rama
-
Finalizar la Funcionalidad:
- Cuando la funcionalidad esté completa y probada, cree un pull request para fusionar la rama
feature/JIRA-123-agregar-autenticacionde vuelta a la ramamain.
- Cuando la funcionalidad esté completa y probada, cree un pull request para fusionar la rama
-
Eliminar Ramas:
- Después de la fusión, puede eliminar las ramas de tarea y funcionalidad:
git branch -d task/JIRA-456-agregar-validacion git branch -d feature/JIRA-123-agregar-autenticacion
- Después de la fusión, puede eliminar las ramas de tarea y funcionalidad: