¿Cómo construir un pipeline en Gitlab?
- Vamos a Menu > Projects > Create new project > Create blank project.
- Elegimos
- Project name (nombre del proyecto): mi auto
- Project slug : miauto
- Visibility level (visibilidad) : Private (proyecto privado)
- Damos clic en Create project
- Vamos a Repository > Files > + > New File
- Dentro del editor vamos a darle el nombre (filename) .gitlab-ci.yml.
Creación de nuestro primer job (trabajo)
Un job es una tarea que Gitlab realiza para nosotros, definimos la siguiente.
stages:
- build
build car:
stage: build
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" > car.txt
- echo "engine" > car.txt
- echo "wheels" > car.txt
En cuanto guardemos (empujemos) los cambios al repositorio Gitlab empezará a ejecutar la pipeline. Esto es visible a través del icono de progreso que es reemplazado por el icono de flecha verde cuando este completa su ejecución.
Si expandimos la ejecución de los comandos dentro de la pipeline, podremos ver que para el job “construir auto” se ejecutan cada uno de los pasos definidos y al final vemos el mensaje Job succeeded.
Ahora vamos a crear un nuevo job para probar nuestro auto.
- Regresamos a la edición del código del archivo .gitlab-ci.yml.
- Agregamos ahora el job para probar.
stages:
- build
- test
build the car:
stage: build
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" >> car.txt
- echo "engine" >> car.txt
- echo "wheels" >> car.txt
test a car:
stage: test
script:
- test -f build/car.txt
- cd build
- grep "chassis" car.txt
- grep "engine" car.txt
- grep "wheels" car.txt
Hemos agregado una línea para probar que el archivo build/car.txt exista, y ademas 3 líneas para verificar que contenga el texto chassis, engine y wheels.
En este punto veremos que la ejecución de test va a reportar un fallo debido a que los jobs son independientes uno del otro, por lo que build/car.txt no existe dentro del segundo job ya que al finalizar el primer job, el sistema de archivos es destruido.
Para evitar este error necesitamos decirle al primer job cual es lo que vamos a esperar que se mantenga, esto se conoce como artifact.
stages:
- build
- test
build the car:
stage: build
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" >> car.txt
- echo "engine" >> car.txt
- echo "wheels" >> car.txt
artifacts:
paths:
- build/
test a car:
stage: test
script:
- test -f build/car.txt
- cd build
- grep "chassis" car.txt
- grep "engine" car.txt
- grep "wheels" car.txt
Al ejecutar nuevamente el job de test veremos que todos los pasos se ejecutan de manera satisfactoria.
Si se llegara a presentar un problema en este punto cerciórate de lo siguiente:
- El archivo tiene el nombre correcto .gitlab-ci.yml.
- El archivo se encuentra en el directorio raíz del proyecto.
- La opción Auto DevOps no esta activada.