¿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.