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