Skip to content

Remover integração com qlty do CI (projeto pausado no Qlty Cloud) #283

Description

@pnzrfst

Contexto

O br_danfe usa o Qlty Cloud no CI (.github/workflows/config.yml) desde f738479 ("Setup Qlty", PR #254, 2025-07-08): o job rspec instala o CLI (curl https://qlty.sh | sh) e publica a cobertura gerada pelo SimpleCov (qlty coverage publish coverage/coverage.json), autenticado.

No facil123, o qlty seguiu um caminho parecido e foi descontinuado:

  • 616520a9c5 (PR #17877, 2025-06-02) — setup inicial (linters + publish de cobertura pro dashboard externo qlty.sh).
  • 014793d10c (PR #20352, 2026-01-30) — linters do qlty (rubocop/eslint/prettier) desativados por serem redundantes com o que já rodava nativamente no CI.
  • 197daebe8d (PR #23291, 2026-07-04) — remoção completa. Motivo, na própria descrição da PR: "O gate de cobertura e o comentário na PR já são feitos pelo couve no bloco Coverage (--fail-on-low-coverage + relatório em Markdown). O qlty apenas publicava os mesmos dados no dashboard externo qlty.sh."

Ou seja: no facil123 o qlty foi cortado porque o couve (gem interna, usada desde 2023) já fazia o gate de cobertura de arquivos alterados e o comentário na PR — o qlty só duplicava a publicação de dados num dashboard que ninguém mais consultava.

O problema real

Com o ecossistema qlty sem uso ativo, o projeto br_danfe no Qlty Cloud foi pausado. qlty coverage publish trata "paused project" como erro fatal (HTTP 400), e isso quebra o job rspec inteiro mesmo quando a suíte passa 100%.

Confirmado ao rerodar as PRs #280 e #281:

Ou seja: os testes estão passando, o CI está vermelho só por causa do step de publish do qlty.

O mesmo padrão de config (curl https://qlty.sh | sh + qlty coverage publish no mesmo bloco do bundle exec rspec) foi encontrado em outros repositórios do ecossistema:

  • nf-e — quebrado direto na branch master desde 2026-07-23 (mesma assinatura: instala o CLI, falha no publish, exit code 99).
  • br_documents — mesmo padrão de config, sem push desde 2026-04-09 (antes da pausa), deve quebrar no próximo push.
  • facil123-connect (Java) — já migrou para mvn clean test + madrapps/jacoco-report, comentando cobertura na PR sem depender do qlty.sh (commit e5e17ac, ver docs/decisoes/0002-gate-de-cobertura-de-linha-no-maven.md).

Objetivo

Remover a integração com o qlty do CI do br_danfe, restaurando o CI verde sem depender de um serviço externo pausado/sem manutenção.

O que muda

  • .github/workflows/config.yml — remover os dois steps do job rspec que instalam e publicam no qlty (curl https://qlty.sh | sh e ~/.qlty/bin/qlty coverage publish coverage/coverage.json), voltando o step para rodar só bundle exec rspec.
  • Remover o secret QLTY_COVERAGE_TOKEN do repositório (settings do GitHub), já que deixa de ser usado.
  • Avaliar se spec/spec_helper.rb ainda precisa do formatter JSON do SimpleCov (simplecov-json, adicionado em af3540d só para alimentar o qlty coverage publish) ou se pode voltar a gerar só HTML.

O que NÃO muda

  • Decisão sobre implementar um substituto tipo couve (gate de cobertura por arquivo alterado + comentário na PR) fica para uma discussão/issue separada — este issue é só a remoção do qlty para destravar o CI.
  • nf-e e br_documents não são tratados aqui; abrir issues equivalentes nesses repositórios depois.
  • Nenhuma mudança de comportamento nos testes em si — rubocop e rspec continuam rodando como hoje.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions