O Que É um YAML Anchor? Reutilizando Blocos YAML Explicado
Um YAML anchor nomeia um bloco de YAML para que possa ser reutilizado em outro lugar via um alias, permitindo evitar repetir a mesma configuração.
Anchors são a resposta do YAML ao "não se repita." Eles permitem definir um pedaço de configuração uma vez, anexar um nome a ele, e então referenciar esse nome em outros lugares. Para config de pipeline repetitiva - configurações de job compartilhadas ou blocos de step repetidos - anchors podem cortar muita duplicação, embora nem toda ferramenta os suporte.
Anchors e aliases
Você define um anchor com um e comercial e um nome em um valor, e o referencia depois com um asterisco e o mesmo nome. O alias é substituído pelo valor com anchor quando o YAML é parseado. Isso permite que uma definição alimente muitos lugares no mesmo arquivo.
Merge keys
Uma merge key (a chave especial de duplo sinal-de-menor-que) permite puxar todos os campos de um map com anchor para dentro de outro map e então sobrescrever ou adicionar campos. É assim que você constrói um bloco base de configurações e cria variações dele sem copiar e colar cada campo.
Anchors são locais ao arquivo
Um anchor só existe dentro do único documento que o define. Você não pode referenciar um anchor entre arquivos separados, e o parser expande aliases no momento de carregamento, então a ferramenta que consome a config nunca vê o anchor - apenas o resultado totalmente expandido.
Anchors em config de CI
GitLab CI e CircleCI suportam YAML anchors para compartilhar definições de job e step. GitHub Actions, por outro lado, não expande anchors em arquivos de workflow - você usa composite actions ou reusable workflows em vez disso. Saber qual plataforma os suporta previne uma surpresa confusa do tipo "meu anchor foi ignorado."
# GitLab CI reusing a block with an anchor
.default_job: &default_job
image: node:20
tags: [docker]
build:
<<: *default_job
script: npm run buildQuando usá-los
Anchors são melhores para config genuinamente repetida dentro de um arquivo em uma plataforma que os suporta. Para reutilização entre arquivos ou no GitHub Actions, prefira reusable workflows e composite actions, que são mais poderosos e portáveis que anchors.
Principais conclusões
- Um YAML anchor nomeia um bloco para que um alias em outro lugar possa reutilizá-lo, reduzindo duplicação.
- Merge keys permitem herdar um map com anchor e sobrescrever campos específicos.
- GitLab CI e CircleCI suportam anchors; GitHub Actions não, então use reusable workflows lá.