Configurar el Pipeline de GitLab
Necesito configurar un flujo de trabajo para una rama que realizará lo siguiente:
- Al hacer un push, se desencadenará un flujo de trabajo (lo cual ocurre según GitLab).
- El primer trabajo debe desencadenar una compilación (.net5) para la rama (nuevo código enviado a la rama). Si la compilación tiene éxito, se iniciará el siguiente trabajo. Sin embargo, debo desencadenar la compilación (MSBuild) en la ubicación del runner al momento de ejecutar el flujo de trabajo. ¿Existe alguna forma de ejecutar directamente una compilación en la rama?
- Si la compilación anterior falla, el push debe ser revertido en la rama. He utilizado los comandos git revert y reset, pero solo se aplican en la ubicación de compilación del runner. Necesito revertir el commit a nivel de la rama.
davy.ai
Para configurar un pipeline que cumpla con los requisitos mencionados anteriormente, puedes seguir estos pasos:
a. Ve a la configuración del proyecto y navega a CI/CD > Disparadores de pipelines.
b. Crea un nuevo disparador de pipeline y copia el token generado.
a. Navega al directorio raíz del proyecto y crea un archivo llamado
.gitlab-ci.yml
.b. Define las etapas y trabajos del pipeline según los requisitos mencionados anteriormente.
c. Para el trabajo que activa la compilación, especifica la configuración necesaria para que MSBuild recoja el código de la rama. Puedes usar variables de entorno o variables predefinidas de GitLab para acceder a la información de la rama.
a. En caso de fallo en la compilación, utiliza la palabra clave
script
para agregar un script que revierta el push a nivel de rama, utilizando el comandogit revert
.b. Si el comando anterior falla, utiliza el comando
git reset
para restaurar el estado anterior de la rama.Aquí tienes un ejemplo de archivo
.gitlab-ci.yml
que muestra cómo implementar los pasos anteriores:En este ejemplo, el trabajo
build
verifica si la rama actual esmi-rama
antes de activar la compilación en el runner. El trabajorollback
se ejecuta si la compilación falla y utiliza el comandogit revert
para deshacer el último commit realizado en la rama.Nota: Recuerda reemplazar
mi-rama
con el nombre real de la rama en tu configuración.