ci: serialize go-unit/ui-test/integration on a shared concurrency group
These three jobs run on the host runner, which shares a single workspace. Run concurrently, they race on workspace teardown: ui-test's production build leaves a root-owned ui/frontend/build that a sibling job's (non-root) cleanup cannot remove, which then spuriously fails that job — observed repeatedly on go-unit when it overlapped a ui-test build. Put all three in one global concurrency group (galaxy-host-runner, cancel-in-progress: false) so they run one at a time and never collide. CI becomes more serial but the false failures stop. This also subsumes ui-test's former ui-test-singleton group, which guarded the Playwright :5173 port; the shared group preserves that guarantee.
This commit is contained in:
@@ -30,6 +30,17 @@ on:
|
||||
- '.gitea/workflows/go-unit.yaml'
|
||||
- '!**/*.md'
|
||||
|
||||
# Serialised with ui-test and integration via a shared concurrency group.
|
||||
# All three run on the host runner, which shares a single workspace, so
|
||||
# running them at the same time races on workspace teardown: the
|
||||
# root-owned ui/frontend/build that ui-test's production build leaves
|
||||
# behind cannot be removed by a sibling job's (non-root) cleanup, which
|
||||
# then spuriously fails that job. One global group runs them one at a
|
||||
# time; cancel-in-progress: false queues runs instead of cancelling them.
|
||||
concurrency:
|
||||
group: galaxy-host-runner
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -37,6 +37,14 @@ on:
|
||||
- '.gitea/workflows/integration.yaml'
|
||||
- '!**/*.md'
|
||||
|
||||
# Shared concurrency group with go-unit and ui-test: the host runner uses
|
||||
# one workspace, so these jobs must not run concurrently or they race on
|
||||
# workspace teardown (see go-unit.yaml for the full rationale). Runs are
|
||||
# queued, not cancelled.
|
||||
concurrency:
|
||||
group: galaxy-host-runner
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
integration:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -18,14 +18,16 @@ on:
|
||||
|
||||
# Playwright launches its own `pnpm dev` on :5173, and in host-mode
|
||||
# the runner shares the host's port namespace with every other job,
|
||||
# so two parallel ui-test runs collide on EADDRINUSE. Serialise via a
|
||||
# singleton concurrency group with queueing — new runs wait their
|
||||
# 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.
|
||||
# so two parallel ui-test runs collide on EADDRINUSE. Serialise via the
|
||||
# shared `galaxy-host-runner` concurrency group (also used by go-unit and
|
||||
# integration) with queueing — new runs wait their turn instead of
|
||||
# cancelling the in-progress one. The shared group additionally avoids the
|
||||
# host-workspace teardown race those jobs hit (see go-unit.yaml). New runs
|
||||
# wait their turn; 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:
|
||||
group: ui-test-singleton
|
||||
group: galaxy-host-runner
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
|
||||
Reference in New Issue
Block a user