🥇 Merge requests (solicitud de integración)

Los merge requests son una forma de visualizar los cambios que van a ser integrados dentro de la rama principal (main o master).

En lugar de realizar los cambios directamente en master, un merge request permite:

  • Ver los cambios que se van a integrar.
  • Permitir a la pipeline ejecutarse sin tener que escribir en la rama principal.
  • Permitir cambios adicionales a ser ejecutados y ver el estatus específico de la pipeline para esta rama en específico.
  • Proporcionar a otros desarrolladores la posibilidad de recibir retroalimentación relacionada al código que han escrito para completar su asignación antes de que este sea integrado en la rama principal.

🍿 ¿Cómo proteger la rama main/master en Gitlab?

Para prevenir que se escriba directamente en la rama main de Gitlab, vamos a la opción Settings > Repository > Protected Branches, en este apartado para la rama main cambiamos el valor de Allowed to push (permiso para escribir) a No one (ninguno). Esto previene que se empujen cambios directamente en main y que todos tengan que ir a través de un merge request.

También es importante realizar la configuración necesaria de las merge requests dentro de Settings > General > Merge Requests, en este apartado dos configuraciones son importantes.

  • Pipelines must succeed (Las pipelines a integrar deben desplegar correctamente).
  • All discussions must be resolved (Todas las retroalimentaciones a nivel del código deben ser resueltas).

🍿 ¿Cómo crear un merge requests en Gitlab?

Para crear un merge request en Gitlab requerimos tener una rama creada a partir de main.

git checkout main
git checkout -b feature/001_feature_name

Realizamos los cambios necesarios sobre nuestra rama y después empujamos dichos cambios.

git add archivo_que_ha_sido_modificado
git push

Dentro de Gitlab vamos a la opción Repository > Branches > feature/001_feature_name > Merge Request, esto nos abrirá el formulario para crear un nuevo merge request.

Una opción importante de esta sección es Delete source branch when merge request is accepted (Borrar la branch cuando esta sea integrada), lo que implica que esta rama será eliminada del repositorio una vez que sea integrada en main.

Al crear el merge request aparecerá una pantalla con el progreso de la pipeline y un botón Merge habilitado cuando la pipeline se despliegue correctamente. Si damos clic a este botón se fusionará la rama actual con main, completando así el merge request y realizando el despliegue de esta integración a la pipeline principal que contiene los elementos staging y production.

Podemos controlar el flujo de despliegue mediante merge requets, estos permiten aislar el desarrollo de features, tasks y bugfixes de manera independiente y luego integrarlos a la rama main cuando han sido debidamente probados. El uso de ramas y merge requests permite evitar trabajar con la rama main directamente y llevar una integración y despliegue continuo.