Skip to content

fix(ci): don't double-run test pipeline on pull requests#10

Merged
klinux merged 1 commit into
mainfrom
fix/ci-dedupe-test-pipeline
Apr 23, 2026
Merged

fix(ci): don't double-run test pipeline on pull requests#10
klinux merged 1 commit into
mainfrom
fix/ci-dedupe-test-pipeline

Conversation

@klinux
Copy link
Copy Markdown
Contributor

@klinux klinux commented Apr 23, 2026

Summary

.woodpecker/test.yaml hoje usa event: [push, pull_request], o que faz o Woodpecker disparar a pipeline duas vezes em cada PR — aparece como ci/woodpecker/pr/test e ci/woodpecker/push/test, cada uma rodando npm install + typecheck + lint + test do zero.

Changes

Split explícito do trigger:

```yaml
when:

  • event: pull_request

  • event: push
    branch: [main, master]
    ```

  • PR aberta/atualizada → só pr/test (1x)

  • Push em main/master (pós-merge) → só push/test (1x, pra confirmar que main segue verde)

  • Feature branch sem PR → nada dispara (se não tem PR, não é sinal que interessa ainda)

Why

  1. Gasto de CI em dobro. Cada PR paga ~52s de npm install redundante × 3 steps × 2 execuções.
  2. Inconsistência entre PRs. A feat(tokens): sync design tokens with shell (Arco pivot) #6 só expôs push/test (sem pr/test ou pr/scan-pr), enquanto a feat: consume @platform/shell-contract from Nexus (drop the local copy) #7 recebeu os três. Depois do split, o conjunto de checks por PR vira previsível: só pr/*.

Os outros dois pipelines (scan-pr.yaml já só pull_request, scan.yaml já só push em main) já estão com trigger adequado — não foram tocados.

Follow-up depois do merge

Se houver branch protection exigindo checks, trocar required de push/testpr/test pra bater com o novo modelo. Sem isso, merge em PR nova vai ficar travando esperando check que nunca roda.

Test plan

  • CI do próprio PR mostra só pr/test + pr/scan-pr (não mais push/test antes do merge)
  • Depois do merge: push em main dispara push/test 1x
  • Confirmar com Infra que pr/test é o check obrigatório na branch protection (se houver)

🤖 Generated with Claude Code

Woodpecker treats `push` and `pull_request` as independent events.
With `event: [push, pull_request]`, every PR fires the exact same
pipeline twice (once as `ci/woodpecker/pr/test`, once as
`ci/woodpecker/push/test`), each running `npm install` + typecheck +
lint + test. That's ~52s of wasted compute per PR plus inconsistent
check sets between PRs (some only surfaced `push/test`).

Split the trigger so pull requests fire the PR pipeline once, and
post-merge pushes to main/master fire the push pipeline once to
confirm main stays green. Feature branches without an open PR no
longer trigger CI — the signal we care about arrives when the PR
opens.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 23, 2026 20:05
Copy link
Copy Markdown

Copilot AI left a comment

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 ajusta o trigger da pipeline de testes do Woodpecker para evitar execução duplicada em pull requests, reduzindo custo de CI e deixando os checks mais previsíveis por evento.

Changes:

  • Separa o when da pipeline de testes em dois casos: pull_request e push somente em main/master.
  • Impede que pushes em branches de feature (sem PR) disparem a pipeline de testes.

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

@klinux klinux merged commit a776dac into main Apr 23, 2026
6 checks passed
@klinux klinux deleted the fix/ci-dedupe-test-pipeline branch April 23, 2026 20:13
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