Skip to content
Latchkey

O Que É YAML? YAML Aint Markup Language Explicado

YAML é um formato de dados amigável ao humano, baseado em indentação, usado para escrever configuração como workflows de CI, manifestos Kubernetes e configurações de ferramentas.

YAML (um acrônimo recursivo para "YAML Aint Markup Language") é o formato em que a maioria dos pipelines de CI/CD é escrita. Ele usa indentação em vez de colchetes, o que o torna agradável de ler e escrever à mão, mas essa mesma sensibilidade a espaços em branco é a fonte da maioria dos erros de YAML. Se você já editou um arquivo .github/workflows, você já escreveu YAML.

O que YAML é

YAML representa os mesmos dados que JSON - maps (pares chave-valor), sequences (listas) e scalars (strings, números, booleanos) - mas usa indentação e traços em vez de chaves e colchetes. É um superset estrito de JSON, então JSON também é YAML válido. Ele suporta comentários, strings multilinha e anchors reutilizáveis, e é por isso que autores de config o preferem.

A indentação é significativa

YAML usa espaços (nunca tabs) para expressar aninhamento, então uma única linha desalinhada pode mudar uma chave de filha para irmã e silenciosamente alterar o significado. Essa é a fonte mais comum de arquivos de workflow quebrados. A maioria dos editores e linters consegue sinalizar erros de indentação antes que cheguem ao CI.

Armadilhas: o problema da Noruega e os tipos

YAML adivinha tipos, o que causa surpresas. O clássico é o "problema da Noruega": o código de país "NO" é parseado como o booleano false. Números de versão sem aspas como 1.20 podem perder um zero à direita ao virar um float. Colocar scalars ambíguos entre aspas como strings evita essas armadilhas.

YAML em workflows de CI

GitHub Actions, GitLab CI, CircleCI e a maioria das ferramentas de pipeline definem seus workflows em YAML. Você declara jobs, steps, triggers e matrices como maps e listas aninhados. Como a indentação importa, validar o arquivo com um linter de YAML em um hook de pre-commit economiza muitas execuções falhas.

A workflow file is YAML
# A minimal GitHub Actions workflow in YAML
name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "hello"

Nota da Latchkey

Você seleciona os runners gerenciados da Latchkey alterando um único valor de YAML - o label runs-on - no seu arquivo de workflow existente. Sem nova sintaxe e sem formato de config separado: o resto do seu pipeline YAML permanece exatamente como está.

Principais conclusões

  • YAML é um formato de dados baseado em indentação, amigável ao humano, e um superset estrito de JSON.
  • O espaço em branco é significativo e tabs são proibidos, então a maioria dos bugs de YAML são erros de indentação.
  • É o formato padrão para arquivos de workflow de CI, então um linter de YAML no CI previne muitas falhas.

Guias relacionados