Saltar al contenido principal

Variables de contorno

As variables de contorno (environment variables) son unha ferramenta clave para pasar información aos jobs, como configuración, rutas, claves API, etc.

Estas variables están dispoñibles dentro dos jobs como se fosen variables do sistema operativo (como nun terminal).

GitLab fornece unha chea de variables automáticas, dispoñibles en todos os pipelines.

Algunhas das máis útiles:

VariableValor que fornece
CI_COMMIT_BRANCHNome da rama do commit
CI_JOB_NAMENome do job actual
CI_PIPELINE_IDID do pipeline
CI_PROJECT_NAMENome do proxecto

Tamén se poden definir variables dentro do ficheiro .gitlab-ci.yml. Por exemplo:

variables:
APP_ENV: production
DEPLOY_PATH: /var/www/app

Ou dentro dun job:

deploy_job:
stage: deploy
variables:
DEPLOY_ENV: staging
script:
- echo "Despregando en $DEPLOY_ENV"

Secrets

Os secrets son información sensible que non debería escribirse directamente no código, como:

  • tokens de API.
  • Claves SSH.
  • Variables de conexión (a bases de datos, AWS, etc.).
  • Credenciais de Docker ou de servizos externos.

Todas elas son variables de contorno confidenciais que se deben almacenar de xeito seguro no GitLab, e utilizadas nos jobs do pipeline sen expoñerse.

Definición

Estas defínense na interface gráfica do propio Gitlab:

  1. Vai ao proxecto Settings > CI/CD
  2. Desprega a sección Variables
  3. Preme en Add variable e introduce:
    • KEY: nome da variable (ex: AWS_ACCESS_KEY)
    • VALUE: o valor secreto
    • Opcional:
      • Protected: só dispoñible para ramas protexidas (como main)
      • Masked: ocúltase nos logs (obrigatorio que cumpra certos criterios)

No ficheiro .gitlab-ci.yml, simplemente chámase á variable como calquera variable de contorno:

deploy_job:
stage: deploy
script:
- echo "Despregando coa clave $API_KEY"
- curl -H "Authorization: Bearer $API_KEY" https://api.exemplo.com/deploy

Estas variables só poden ser vistas/modificadas por usuarios con rol de:

  • Maintainer
  • Owner

Developers e roles inferiores non poden ver nin editar estas variables.