Repository navigation
Commit b14f856
committed
ci(workflows): run the E2E suite on approval instead of on every push
The suite is 176 of a pull request's ~180 minutes and it runs on every
push: 4.5 times per pull request on average, and 41 times on one
renovate branch. Nothing about that buys coverage. A pull request that
reaches main is approved by definition, since renovate carries
automerge: false and the ruleset requires one approving review, so
gating the expensive job on an approving review costs nothing and stops
paying for the suite four times over. dismiss_stale_reviews is already
on, so a push after approval invalidates it and the next approval earns
a fresh run against the new head.
Everything ahead of the suite still runs on a push, so a broken build is
still reported in minutes. Only the e2e job waits.
Two ways to reach the lane without an approval, which a draft or an
author wanting an early run needs. Both are labels, and both are keyed
on the label EVENT rather than on the label being present, which makes
e2e/run a one-shot button with no code to strip it afterwards: applying
it fires `labeled` and that run goes heavy, while the next push does not
look at the label list. Removing and re-applying presses it again.
Reading the list instead would need pull-requests: write, which a fork's
read-only token does not have.
e2e-report leaves the pending status the plan opener wrote when the lane
was not earned, rather than falling through to its final branch, which
would report "in-tree e2e did not pass (result: skipped)". That is
fail-closed either way, but a red cross that nobody can explain is how a
gate stops being read. The new branch sits after the docs-only and
release-promotion cases on purpose: all three mean "e2e did not run" and
their outcomes differ, success for the first two so the pull request can
merge, pending for this one so it cannot.
full-e2e becomes e2e/full and is declared for the first time, alongside
e2e/run. It had been read by three workflows for months while existing
in no label file, surviving only because the sync runs with
delete-other-labels: false. The rename carries an alias, so the existing
label is renamed rather than lost, and every consumer moves in the same
commit, the way kind/backport did in #2585.
The contract tests could not see either new name: gate-concurrency's
label extraction matched [a-z0-9-]*, so a namespaced label was invisible
and both sides of the complement simply stopped mentioning it, matching
each other while covering nothing. Widening the class restores the
check, and it then verified this change: the "every publishing guard
names the same label set" assertion is what proves e2e/run reached all
four guards. promote-gate-contract pins the same names by text in
promote-rc.yaml, e2e-fork.yaml and plan's own guard, so its expectations
move with them.
Fork pull requests are unchanged by this commit and still run their lane
per push; e2e-fork.yaml resolves through workflow_run and cannot read
the heavy output, so it needs a reviews-API lookup of its own.
Assisted-By: LLM
Signed-off-by: Myasnikov Daniil <[email protected]>1 parent 4f337d6 commit b14f856
7 files changed
Lines changed: 138 additions & 46 deletions
File tree
- .github
- workflows
- docs/agents
- hack
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
321 | 341 | | |
322 | 342 | | |
323 | 343 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
147 | | - | |
| 147 | + | |
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
296 | | - | |
| 296 | + | |
297 | 297 | | |
298 | 298 | | |
299 | 299 | | |
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
325 | | - | |
| 325 | + | |
326 | 326 | | |
327 | 327 | | |
328 | 328 | | |
| |||
672 | 672 | | |
673 | 673 | | |
674 | 674 | | |
675 | | - | |
| 675 | + | |
676 | 676 | | |
677 | 677 | | |
678 | 678 | | |
| |||
691 | 691 | | |
692 | 692 | | |
693 | 693 | | |
694 | | - | |
| 694 | + | |
695 | 695 | | |
696 | 696 | | |
697 | 697 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1000 | 1000 | | |
1001 | 1001 | | |
1002 | 1002 | | |
1003 | | - | |
| 1003 | + | |
1004 | 1004 | | |
1005 | 1005 | | |
1006 | 1006 | | |
| |||
1025 | 1025 | | |
1026 | 1026 | | |
1027 | 1027 | | |
1028 | | - | |
| 1028 | + | |
1029 | 1029 | | |
1030 | 1030 | | |
1031 | 1031 | | |
| |||
0 commit comments