Skip to content
Latchkey

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

Anchor and merge key in GitLab CI
# GitLab CI reusing a block with an anchor
.default_job: &default_job
  image: node:20
  tags: [docker]

build:
  <<: *default_job
  script: npm run build

Quando 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á.

Guias relacionados