🔥 Uso de anclas dentro de templates

☆ ¿Cómo se utilizan las anclas (anchors) dentro de los templates de Gitlab?

En este punto tenemos en nuestra pipeline una serie de jobs muy similares, estos corresponden a la acción deploy en diferentes stages/environments.

deploy staging website:
  stage: deploy staging
  image: node
  environment:
    name: staging
    url: https://misitioestatico-staging.surge.sh
  when: manual
  allow_failure: false
  only:
    - main
  script:
    - npm i -G yarn
    - yarn global add surge
    - surge --project public --domain $STAGING_DOMAIN

deploy production website:
  stage: deploy production
  image: node
  environment:
    name: production
    url: https://misitioestatico.surge.sh
  when: manual
  allow_failure: false
  only:
    - main
  script:
    - npm i -G yarn
    - yarn global add surge
    - surge --project public --domain $PRODUCTION_DOMAIN

Vamos a simplificar la estructura yaml anterior echando mano de anclas, para ello creamos un template base llamado .deploy_template precedido por un punto.

.deploy_template: &deploy
  image: node
  environment:
    url: https://$DOMAIN
  when: manual
  allow_failure: false
  only:
    - main
  script:
    - npm i -G yarn
    - yarn global add surge
    - surge --project public --domain $CI_ENVIRONMENT_URL

deploy staging website:
  <<: *deploy
  stage: deploy staging
  environment:
    name: staging
  variables:
    DOMAIN: $STAGING_DOMAIN

deploy production website:
  <<: *deploy
  stage: deploy production
  environment:
    name: production
  variables:
    DOMAIN: $PRODUCTION_DOMAIN

Como podemos ver, mediante el uso de templates podemos simplificar la sintaxis de nuestro pipeline cuando este utiliza bloques de código recurrentes a través de los diferentes jobs.