Skip to content

perf(ci): one Code Quality run per commit, not two - #180

Merged
rubenvdlinde merged 1 commit into
developmentfrom
perf/ci-one-run-per-commit
Aug 27, 2026
Merged

perf(ci): one Code Quality run per commit, not two#180
rubenvdlinde merged 1 commit into
developmentfrom
perf/ci-one-run-per-commit

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

A push to a branch with an open PR ran the same 34 jobs twice on the same
commit
. concurrency cannot deduplicate them: the group is suffixed by event
name deliberately (ConductionNL/.github#540 — a default-branch push carries
jobs a PR run does not, and a workflow_dispatch must not be cancellable by
the standing release PR), so push and pull_request sit in different lanes
by design
and both run to completion.

Measured, fleet-wide, 2026-08-25 → 27

Code Quality runs 2,106
...that were a push duplicating a PR run on the same commit 659 (31%)
Feature-branch push runs with no PR run beside them 9 of 668
Concurrent job ceiling (GitHub Team plan) 60
Measured at one instant 53 running, 1,528 queued
Oldest run not yet started 425 minutes
Median successful run 78.5 min — of which ~38 job-min is work
Median wait per job before it starts 28.6 min (100% of jobs waited >10 min)

The suite is not slow. Its longest job is 16 minutes. ~96% of the wall clock is
queueing, and duplicate runs are the single largest contributor.

What changes

on.push.branches keeps only the default branches this repo already listed and
drops the feature-branch globs. pull_request is untouched and still covers
every one of those branches on [opened, reopened, synchronize], so every
commit going anywhere is still fully checked — once.

No branch loses its floor

merge-hygiene.yml runs on '**' — every branch anyone pushes, no prefix list
to forget — and it is the check development actually requires. That is the
smoke alarm; Code Quality is the fire brigade and belongs on the PR.

The default branches stay: their push runs are not duplicates, they are the only
carrier of Coverage Baseline Check, SBOM and Features Extract, none of which run
on a pull_request event.

Verification

Both versions of every one of the 21 files were parsed with PyYAML and compared
key by key: name, concurrency, permissions, jobs and on.pull_request
are identical, and the new push.branches is a strict subset of the old. The
only structural change is the removal of the glob entries.

@rubenvdlinde
rubenvdlinde merged commit 7e95a01 into development Aug 27, 2026
31 checks passed
@rubenvdlinde
rubenvdlinde deleted the perf/ci-one-run-per-commit branch August 27, 2026 16:31
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/nextcloud-app-template @ e4bbfd2

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
check-manifest
format
composer ✅ 103/103
npm ✅ 737/737
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-27 19:33 UTC

Download the full PDF report from the workflow artifacts.

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.

1 participant