Pular para o conteúdo

Validador de CI do GitLab · CI/CD

Validar gitlab-ci.yml online, antes que o runner ache o erro.

Cole um .gitlab-ci.yml e valide o pipeline do GitLab online: este linter de GitLab CI mostra seus erros de YAML mais as configurações estruturais incorretas que o GitLab rejeitaria — stages não declarados, jobs sem script, needs/extends quebrados. Na hora, no seu navegador. Sem instalação, sem projeto e sem login.

Roda no seu navegador — nada do que você cola sai desta página. Como comprovamos isso

Roda no seu navegador Sem cadastro Focado em estrutura Atualizado em 29 de jul. de 2026

Validar gitlab-ci.yml online — playground do linter de GitLab CI

.gitlab-ci.yml

Runs entirely in your browser — nothing is uploaded.

Tip: press Esc to release keyboard focus from the editor.

Results

Load an example or paste a pipeline, then validate to see YAML errors and pipeline checks here.

A lacuna

YAML válido é só metade do trabalho.

Um .gitlab-ci.yml pode ser analisado como um YAML perfeitamente válido e ainda assim ser um pipeline quebrado. Os erros que de fato fazem uma execução falhar são estruturais: um job apontando para um stage que você nunca declarou, um job sem script, uma entrada needs nomeando um job que não existe, ou um extends sobre um template que você renomeou.

O próprio editor de pipeline e CI Lint do GitLab detectam isso — mas só depois que você faz push para um projeto e faz login. Este validador roda as mesmas verificações estruturais de alto sinal antes de você fazer commit, inteiramente no seu navegador, contra a referência de palavras-chave do .gitlab-ci.yml do GitLab.

Ele verifica as duas coisas — o YAML e a estrutura do pipeline — para que você possa validar o .gitlab-ci.yml online e checar o pipeline do GitLab antes do push, sem nada para instalar e sem nada enviado.

Veja a lista completa nas verificações de pipeline, ou experimente o playground ao vivo acima.

O pipeline

Como funciona.

Cinco passos determinísticos rodam de ponta a ponta em cada validação — todos dentro da aba do seu navegador, toda vez.

  1. Analisa o YAML.

    Seu .gitlab-ci.yml é analisado com um leitor de YAML — os erros de sintaxe, a indentação incorreta e os problemas estruturais são reportados com a linha que quebrou.

  2. Separa a config.

    O nível superior é separado em palavras-chave globais (stages, default, variables…), jobs visíveis e .templates ocultos, para que o analisador saiba o que é um job e o que é configuração.

  3. Resolve os stages.

    A lista stages: declarada (ou os cinco padrões: .pre, build, test, deploy, .post) se torna o conjunto contra o qual o stage de cada job é verificado.

  4. Verifica cada job.

    Cada job é validado quanto a uma superfície executável, um stage conhecido, alvos reais em needs / extends / dependencies, um when válido, um rules em formato de lista e formatos sensatos de image / services.

  5. Ordena por severidade.

    Os achados são classificados como erro, aviso ou info — os erros que quebram o pipeline sobem para o topo, à frente de notas consultivas como only/except legados, cada um com uma correção concreta.

Verificações de pipeline

As 4 verificações que importam.

Além da validade do YAML, o analisador busca as configurações incorretas que fazem um pipeline falhar antes que um único job rode. Cada uma abaixo mostra o padrão quebrado e a correção.

Stage não declarado em stages:

Severidade alta

Um job cujo stage: não está na sua lista stages: (ou em um dos padrões .pre, build, test, deploy, .post) é um erro de configuração — o GitLab não sabe quando executá-lo e recusa o pipeline.

Quebrado

.gitlab-ci.yml
# BROKEN — "release" is not a declared stage
stages:
  - build
  - test

release-job:
  stage: release       # not in stages:
  script:
    - make release

Corrigido

.gitlab-ci.yml
# FIXED — every stage used is declared
stages:
  - build
  - test
  - release

release-job:
  stage: release
  script:
    - make release

Job sem script / trigger / extends

Severidade alta

Um job visível precisa fazer alguma coisa: rodar comandos (script:/run:), iniciar um pipeline downstream (trigger:) ou herdar isso de outro job (extends:). Um job sem nenhum deles é rejeitado pelo GitLab.

Quebrado

job
# BROKEN — this job does nothing
build-job:
  stage: build
  # no script, run, trigger, or extends

Corrigido

job
# FIXED — give the job a script
build-job:
  stage: build
  script:
    - make build

needs / extends apontando para um job inexistente

Severidade média

Cada entrada em needs:, dependencies: ou extends: precisa referenciar um job ou um .template oculto que de fato exista no arquivo. Uma referência a um job inexistente quebra o grafo do pipeline.

Quebrado

.gitlab-ci.yml
# BROKEN — "compile" and ".base" never exist
test:
  stage: test
  needs:
    - compile          # no such job
  extends: .base       # no such template
  script:
    - make test

Corrigido

.gitlab-ci.yml
# FIXED — references resolve to real definitions
.base:
  image: golang:1.22

compile:
  stage: build
  extends: .base
  script: make

test:
  stage: test
  needs:
    - compile
  extends: .base
  script: make test

when: inválido / rules: que não é uma lista

Severidade média

when: só aceita on_success, on_failure, always, manual, delayed ou never. rules: precisa ser uma lista YAML de objetos de regra — um mapeamento ou um erro de digitação aqui muda (ou quebra) o momento em que um job roda.

Quebrado

job
# BROKEN — bad when value, rules is a mapping
deploy:
  stage: deploy
  when: sometimes      # not allowed
  rules:
    if: '$CI_COMMIT_TAG'   # rules must be a list
  script: ./deploy.sh

Corrigido

job
# FIXED — valid when, rules as a list
deploy:
  stage: deploy
  rules:
    - if: '$CI_COMMIT_TAG'
      when: manual
  script: ./deploy.sh

Stages, rules e dependências de jobs estão todos documentados na referência de stages e na referência de rules do GitLab. As verificações de formato dos legados only/except e de image/services também funcionam hoje.

Próximo passo

Roda GitHub Actions também? Valide esses workflows.

Muitas equipes rodam pipelines nas duas plataformas. Quando seu .gitlab-ci.yml estiver limpo, o GitHub Actions Validator encontra os erros de YAML e as brechas de segurança nos seus workflows, e o GitHub Actions Expression Tester avalia expressões ${{ … }} antes de você fazer push — ambos inteiramente no seu navegador.

.gitlab-ci.yml
stages: [build, test]

build:
  stage: build
  script: make

test:
  stage: test
  needs: [build]   # ✓ resolves
  script: make test

FAQ

Suas perguntas, respondidas.

Toque em uma pergunta para expandir a resposta.

Cole o conteúdo do seu .gitlab-ci.yml na caixa acima e a validação roda na hora, dentro do navegador. Você recebe duas coisas ao mesmo tempo. Primeiro, ele analisa o YAML e reporta erros de sintaxe, indentação incorreta e falhas estruturais, indicando a linha que quebrou. Segundo, ele roda verificações de configuração de pipeline incorreta que correspondem à forma como o próprio GitLab valida uma config: um job sem script / run / trigger / extends, um job cujo stage não está na sua lista de stages, referências em needs e extends que apontam para jobs que não existem, um valor de when inválido, um bloco rules que não é uma lista, only/except legados e formatos incorretos de image/services. É um jeito rápido de verificar o pipeline do GitLab sem sair do navegador.

Sim. Diferente do CI Lint embutido do GitLab, este validador de GitLab CI YAML não exige um projeto, um repositório nem um login. Cole o .gitlab-ci.yml direto no navegador e ele roda o conjunto completo de verificações localmente. Como nada é enviado para um servidor, você pode colar com segurança pipelines internos ou proprietários — inclusive os que têm tags de runner privadas, nomes de imagens internas e referências a variáveis secretas.

Essa mensagem aparece quando o GitLab consegue ler o YAML, mas a configuração do pipeline não respeita as regras dele. As causas mais comuns são estruturais: um job apontando para um stage que não está em stages:, um job sem script / run / trigger / extends, uma entrada em needs ou extends que nomeia um job que não existe, um valor de when inválido ou um bloco rules escrito como mapeamento em vez de lista. O validador reproduz essas mesmas verificações e aponta exatamente qual linha torna a config inválida, com uma correção concreta para cada caso.

Cole o YAML do pipeline neste validador baseado em navegador para detectar erros antes de fazer commit — sem instalar nada e sem precisar de push. A ferramenta roda o conjunto completo de verificações (estrutura YAML mais configurações de pipeline incorretas) inteiramente no seu navegador, então você recebe feedback instantâneo sobre erros de sintaxe, stages não declarados, jobs sem scripts, needs/extends quebrados e valores de when inválidos antes que a config chegue a um runner do GitLab. Trate um resultado limpo aqui como uma sólida confiança antes do push e depois confirme com o CI Lint do GitLab.

Sim — esta página é exatamente isso. Você pode validar o seu .gitlab-ci.yml online de graça, sem cadastro, sem conta e sem instalar nada. O validador roda 100% no lado do cliente: o arquivo é analisado e examinado dentro da aba do seu navegador, e nada é enviado para um servidor. O CI Lint do GitLab também é gratuito, mas exige um projeto e um login; aqui você só precisa colar o YAML.

Além da validade do YAML, ele roda as verificações estruturais de alto sinal que correspondem ao que o GitLab valida: stages não declarados, um job sem script / run / trigger / extends, referências em needs / dependencies / extends que apontam para jobs ou templates inexistentes, valores de when inválidos, blocos rules que não são listas, only/except legados e formatos incorretos de image/services. Cada achado é classificado como erro, aviso ou info, e os erros que quebram o pipeline sobem para o topo. Templates ocultos (chaves que começam com um ponto) podem ser fragmentos parciais, então não são obrigados a ter um script.

O erro "did not find expected key" é um erro de YAML, não de pipeline: o leitor de YAML esperava uma chave de mapeamento e encontrou indentação inconsistente, dois-pontos faltando ou um item de lista mal alinhado. Quase sempre é espaçamento — use sempre dois espaços por nível e nunca tabs. O validador aponta a linha exata em que o YAML quebra, para você corrigir a indentação antes mesmo de chegar às verificações de configuração do pipeline.

Um job visível do GitLab tem que fazer alguma coisa. Um job comum roda comandos com script: (ou o mais novo run:), um job-ponte inicia um pipeline downstream com trigger:, e um job pode herdar qualquer um desses de outro job ou de um template oculto via extends:. Um job visível que não define nenhum deles é rejeitado pelo GitLab com um erro como "job config should implement a script: or a trigger: keyword". O validador sinaliza qualquer job visível que não tenha um desses quatro. Templates ocultos (chaves que começam com um ponto) podem ser fragmentos parciais, então não precisam de um script.

More free, private DevOps tools.

O validador de CI do GitLab é uma ferramenta dentro do OpsCanopy — uma copa crescente de validadores, conversores e testadores baseados em navegador que nunca tocam um servidor.

Começando com Docker?  Leia o guia de Docker →

39 ferramentas gratuitas, todas capazes de funcionar offline — o opscanopy.com não exige cadastro e não envia nada.

Ferramentas relacionadas: o GitHub Actions Validator e o GitHub Actions Expression Tester. Explore o diretório completo de ferramentas.

Não é afiliado, endossado nem patrocinado pela GitLab B.V. GitLab é uma marca comercial da GitLab B.V., usada aqui apenas de forma descritiva para identificar o formato de pipeline .gitlab-ci.yml que esta ferramenta verifica.