Saltar a contenido

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.

mmd

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.

mmd

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, donde id_jira es el identificador de la historia en Jira y nombre es una descripción breve de la funcionalidad.
  • Tareas: Las ramas relacionadas a tareas deben ser nombradas como task/id_jira-nombre, donde id_jira es el identificador de la tarea en Jira y nombre es 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, donde id_jira es el identificador del bug en Jira y nombre es 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 ID JIRA-123)
  • Tarea: task/JIRA-456-agregar-validacion (representando una tarea en Jira con ID JIRA-456)
  • Corrección de Bug: bugfix/JIRA-789-corregir-error-login (representando un bug en Jira con ID JIRA-789)

3. Flujo de Trabajo con Integración a Jira

  1. Crear la Rama de Funcionalidad:

    • Inicie desde la rama main y cree una nueva rama para la funcionalidad relacionada con la historia:
      git checkout main
      git checkout -b feature/JIRA-123-agregar-autenticacion
      
  2. 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
      
  3. Desarrollar y Hacer Commit:

    • Realice los cambios necesarios en la rama task/JIRA-456-agregar-validacion y haga los commits:
      git add .
      git commit -m "Implementa la tarea JIRA-456: agregar validación"
      
  4. Crear un Pull Request:

    • Después de concluir la tarea, haga push de la rama task/JIRA-456-agregar-validacion al 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-validacion en la rama feature/JIRA-123-agregar-autenticacion.
  5. 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-validacion será fusionada en la rama feature/JIRA-123-agregar-autenticacion.
  6. Finalizar la Funcionalidad:

    • Cuando la funcionalidad esté completa y probada, cree un pull request para fusionar la rama feature/JIRA-123-agregar-autenticacion de vuelta a la rama main.
  7. 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