Skip to content

ci: avisar quando a release ficar para trás - #49

Merged
janeiaraujo merged 1 commit into
mainfrom
ci/guarda-de-release
Aug 3, 2026
Merged

ci: avisar quando a release ficar para trás#49
janeiaraujo merged 1 commit into
mainfrom
ci/guarda-de-release

Conversation

@janeiaraujo

Copy link
Copy Markdown
Owner

Por que

É a terceira vez que vários PRs entram na main sem bump e a release fica
para trás — a última vez com uma correção de segurança dentro (fast-uri, #35),
que ficou sem tag. Bumpar à mão de novo (#48) conserta o sintoma; isto aqui é o
que impede a quarta.

Duas guardas, nenhuma bloqueante

No PR (ci.yml, job novo): se o PR mexe em backend/src/ ou
frontend/src/ e mantém a versão, o CI emite um ::warning:: e escreve no
resumo do job.

Não é erro de propósito. PR de documentação, teste ou CI não precisa de
release, e falhar nesses casos ensinaria a ignorar o aviso — que é justamente
como uma guarda deixa de funcionar. Agrupar vários PRs numa release só continua
sendo válido; o aviso só garante que a decisão seja consciente.

Na main (release-drift.yml, novo): a cada push, compara a main com a
última tag. Havendo mudança de produção sem tag, abre (ou atualiza) uma issue
listando o que entrou e como fechar. Quando a release sai, ela se fecha
sozinha
com um comentário.

Esta é a que teria pego os três casos: o problema nunca foi um PR isolado, foi
a sequência deles.

Um detalhe que importa

O filtro inclui os lockfiles, não só src/. É por eles que uma correção de
segurança transitiva chega — e foi exatamente o caso que passou despercebido:
o fast-uri não toca em src nenhum e mesmo assim precisava ser publicado.

Rodando a lógica contra o estado real de hoje:

$ git log --oneline v2.4.0..origin/main -- backend/src frontend/src \
    backend/package-lock.json frontend/package-lock.json | wc -l
5

Cinco commits de produção sem tag — que é precisamente a situação que o #48
está corrigindo.

O que estas guardas não fazem

Não bumpam versão sozinhas. Se é patch, minor ou major continua sendo decisão
de quem abre o PR — automatizar isso exigiria confiar cegamente no prefixo do
commit, e um fix: que quebra contrato viraria patch silenciosamente.

Verificação

  • os dois YAML validados como YAML
  • lógica de detecção simulada contra o histórico real: acusa 5 commits desde a
    v2.4.0, e a lista bate com os PRs que ficaram sem release
  • READMEs (pt e en) atualizados na seção de Versionamento

Terceira vez que varios PRs entram na main sem bump e a release fica
para tras - da ultima vez com uma correcao de seguranca dentro
(fast-uri). Bumpar a mao de novo so adia a quarta.

Duas guardas, nenhuma bloqueante:

- no PR: se ele mexe em backend/src ou frontend/src e mantem a versao,
  o CI emite um ::warning:: e escreve no resumo do job. Nao e erro: PR
  de doc, teste ou CI nao precisa de release, e falhar nesses casos
  ensinaria a ignorar o aviso;

- na main: release-drift.yml compara a main com a ultima tag a cada
  push e mantem uma issue aberta enquanto houver mudanca de producao
  sem tag, listando o que entrou e como fechar. A issue se fecha
  sozinha quando a release sair.

O filtro inclui os lockfiles, nao so src: e por eles que uma correcao
de seguranca transitiva chega, e foi exatamente o caso que passou
despercebido - o fast-uri nao toca em src nenhum.

Nada disso bumpa versao sozinho: patch, minor ou major continua sendo
decisao de quem abre o PR.
Copilot AI review requested due to automatic review settings August 3, 2026 22:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR adiciona duas “guardas” no GitHub Actions para reduzir o risco de a branch main ficar à frente da última release/tag sem ninguém perceber, mantendo o time consciente quando há mudanças de produção sem bump de versão.

Changes:

  • Adiciona um novo job no CI para emitir ::warning:: quando PRs alterarem código de produto sem bump de versão.
  • Cria um workflow (release-drift.yml) que, a cada push na main, compara main com a última tag e abre/atualiza uma issue enquanto houver “drift”.
  • Atualiza os READMEs (pt/en) explicando as novas guardas no fluxo de versionamento.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/ci.yml Novo job de aviso (não-bloqueante) para PRs que mudam produto sem bump de versão.
.github/workflows/release-drift.yml Novo workflow para detectar drift entre main e a última tag e manter uma issue de lembrete.
README.md Documenta as duas guardas no processo de versionamento.
README.en.md Documenta as duas guardas no processo de versionamento (EN).
Suppressed comments (1)

.github/workflows/ci.yml:66

  • O resumo do job menciona apenas mudanças em backend/src//frontend/src/, mas a própria descrição do PR diz que lockfiles também contam como mudança de produção. Se você passar a checar lockfiles, atualize esta linha para não induzir quem lê o summary a ignorar esse caso.
            echo "Este PR mexe em \`backend/src/\` ou \`frontend/src/\` e mantem a versao em **$VERSAO_PR**."

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml
Comment on lines +49 to +55
MUDOU_PRODUTO=$(git diff --name-only "$BASE"...HEAD \
| grep -E '^(backend/src/|frontend/src/)' | head -1 || true)

if [ -z "$MUDOU_PRODUTO" ]; then
echo "PR nao mexe em codigo de produto - nada a avisar."
exit 0
fi
Comment on lines +12 to +15
on:
push:
branches: [main]

@janeiaraujo
janeiaraujo merged commit 773ecb4 into main Aug 3, 2026
5 checks passed
@janeiaraujo
janeiaraujo deleted the ci/guarda-de-release branch August 3, 2026 23:37
@janeiaraujo janeiaraujo mentioned this pull request Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants