Looking for an English version?

¿Por qué scripts de Bash?

Notarás que en los proyectos de ejemplo puse todos los comandos en scripts de Bash. ¿Por qué? Nos proporciona 2 cosas.

  1. Nos permite ejecutar los comandos localmente (es decir, ./build.sh)
  2. Hace que tu CI sea más portable. Casi cualquier sistema de CI puede ejecutar scripts de bash. La diferencia entre GitHub y GitLab está únicamente en cómo le indicamos al sistema qué script ejecutar y cuándo.

¿Nuevo Usuario de Bash?

Elegí Bash porque me resulta familiar (más que PowerShell) y porque es multiplataforma. Si estás empezando, recomiendo adquirir esta guía rápida. Lo más importante es asegurarte de agregar set -euo pipefail al inicio de tus scripts de bash para que el manejo de errores y los códigos de salida funcionen correctamente.

Una Nota Sobre las Variables

En los ejemplos de GitLab, notarás esta línea:

. <(sed -nr '/variables:/,$ s/  ([A-Z_]+): (.*)/\1=\2/ p' vars.yml)

Lo que hace esta línea es leer el archivo vars.yml, tomar la sección de variables y establecerlas como variables de entorno. Esto nos permite definir las variables una sola vez y usarlas tanto al ejecutar localmente como en el servidor de CI (este archivo se incluye en el .gitlab-ci.yml). El comando sed es algo así como magia negra, pero funciona. Lo encontré aquí: https://unix.stackexchange.com/questions/539009/export-environment-variables-parsed-from-yaml-text-file