2 Commits

Author SHA1 Message Date
developer 77cb7c78b6 Merge pull request #9: ui-test singleton queue
Tests · UI / test (push) Successful in 2m14s
Replaces per-sha cancel-in-progress (which fired spurious self-cancels) with a singleton queueing group. ui-test #74 (push) and #75 (pull_request) both green at ~2m, queue-not-cancel verified.
2026-05-15 06:57:09 +00:00
Ilia Denisov 1a0e3e992f ci/ui-test: queue runs in one bucket instead of cancelling
Tests · UI / test (push) Waiting to run
Tests · UI / test (pull_request) Successful in 2m20s
`cancel-in-progress: true` killed run #73 even though it was the
only ui-test in its concurrency group — Gitea appears to cancel the
in-progress job on its own under that setting in some edge cases.

Switch to a singleton group with `cancel-in-progress: false`. The
new behaviour is simple queueing: only one ui-test workflow runs at
a time across the repository, the rest wait. Vite-on-:5173 cannot
collide because there is never a second ui-test alive. The wall-time
hit is bounded — ui-test is ~2 minutes — and bursts are rare enough
that queueing is cheap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 08:51:54 +02:00
+10 -7
View File
@@ -16,14 +16,17 @@ on:
- '.gitea/workflows/ui-test.yaml' - '.gitea/workflows/ui-test.yaml'
- '!**/*.md' - '!**/*.md'
# Playwright launches its own `pnpm dev` on :5173. In host-mode the # Playwright launches its own `pnpm dev` on :5173, and in host-mode
# runner shares the host's port namespace, so two parallel ui-test # the runner shares the host's port namespace with every other job,
# jobs (e.g. a push event racing with a pull_request event for the # so two parallel ui-test runs collide on EADDRINUSE. Serialise via a
# same commit) collide on EADDRINUSE. Group by the head commit so # singleton concurrency group with queueing — new runs wait their
# push and pull_request events for the same sha share one bucket. # turn instead of cancelling the in-progress one. cancel-in-progress
# is explicitly false because Gitea has shown spurious self-cancel
# behaviour under cancel-in-progress: true even when no other run
# shares the group.
concurrency: concurrency:
group: ui-test-${{ gitea.event.pull_request.head.sha || gitea.sha }} group: ui-test-singleton
cancel-in-progress: true cancel-in-progress: false
jobs: jobs:
test: test: