Skip to content

Intensificación Técnico Organizativa (ITO)

brgutierrez edited this page Jan 8, 2025 · 1 revision

Ejercicio individual de EGC - 2024/2025 - Parte Práctica

Ejercicio Git (2,5 puntos)

  1. 📷 Clone el repositorio desde su fork en GitHub: Utilice el enlace de su fork para clonar el repositorio en su ordenador.
  2. 📷 Despliegue el sistema en local.
  3. 📷 Muévase a la rama feature/init-bug y relance la aplicación. Debería encontrar un error debido a que alguien ha comentado accidentalmente la función create_app en el archivo app/__init__.py.
  4. Cree una issue en su fork para reportar el error: Utilice una plantilla de issues que sea similar a la empleada en su proyecto (por ejemplo, con secciones para descripción, pasos para reproducir, y el comportamiento esperado).
  5. 📷 Cree una rama local a partir de feature/init-bug para solucionar la issue. Nombre a la rama fix/app-init. Trabaje en esta rama para solucionar el error reportado en la issue. Realice los cambios necesarios, haga commit y asegúrese de incluir un mensaje de commit descriptivo que haga referencia a la issue. Haga push de la nueva rama.
  6. Desde la rama fix/app-init, abra una Pull Request (PR) hacia la rama feature/init-bug. En el mensaje de la PR, describa la solución aplicada y haga referencia a la issue creada previamente. Complete el proceso hasta cerrar la PR. No elimine la rama, la necesitará a continuación.
  7. Simule un conflicto intencionado y resuélvalo:
    • 📷 Cree una nueva rama llamada feature/conflicto a partir de fix/app-init.
    • 📷 Realice cambios en el archivo (app/__init__.py). Por ejemplo, modifica la configuración de la base de datos de manera diferente (db.init_app(app, uri=os.getenv('DB_CONNECTION_STRING'))). Haga commit y confirme los cambios.
    • 📷 Regrese a la rama fix/app-inity realice cambios en el mismo archivo y línea, pero con una configuración diferente de la base de datos (db.init_app(app, uri=os.getenv('DATABASE_URI'))), esto preparará el escenario para el conflicto. Haga commit y confirme los cambios.
    • 📷 Intente realizar el merge de la rama feature/conflicto hacia fix/app-init.
    • 📷 Durante el proceso de merge, resuelva el conflicto de forma manual, asegurándose de mantener ambos cambios.
    • 📷 Confirme la resolución del conflicto y complete el merge.
    • 📷 Haga push al repositorio remoto.
  8. 📷 Identifique el ID de un commit en la rama hotfix/bug-critical donde se resuelve el bug de la rama main que no permite ver los detalles de un dataset en la vista view_dataset.
  9. 📷 Aplique el commit específico a la rama main utilizando un cherry-pick. Verifique el cambio y haga push.

Nota Importante: Todas las acciones (issues, ramas, commits y PRs) deben realizarse exclusivamente en su fork. En ningún caso realice cambios o abra PRs en el repositorio original proporcionado por el profesor.


Ejercicio GitHub Actions (2,5 puntos)

  1. 📷 Cambie a la rama config/ci y modifique el workflow ejercicio_ci.yml para usar Python 3.11.
  2. 📷 Añada un nuevo job outdated_dependencies al workflow ejercicio_ci.yml para comprobar dependencias desactualizadas.
  3. 📷 Verifique el correcto funcionamiento del workflow.
  4. 📷 Configure el workflow para lanzar pruebas con MySQL 5.7 y 8.0.
  5. 📷 Verifique el correcto funcionamiento del workflow.

Ejercicio Docker (2,5 puntos)

  1. 📷 Cambie a la rama chore/docker y despliegue el sistema utilizando Docker en el equipo.
  2. 📷 Configure uvlhub para que no utilice el modo DEBUG de Flask cuando se despliegue con Docker.
  3. 📷 Compruebe su correcto funcionamiento y verifique que no está en modo debug. No olvide hacer commit y push en rama chore/docker.

Ejercicio Vagrant (2,5 puntos)

  1. 📷 Cambie a la rama chore/vagrant y realice los cambios necesarios para que la máquina virtual creada utilice 6 CPUs y 4 GB de RAM.
  2. 📷 Despliegue el sistema utilizando vagrant. No olvide hacer commit y push en rama chore/vagrant.