ci: serialize go-unit/ui-test/integration to fix the runner workspace race #86
@@ -30,6 +30,17 @@ on:
|
|||||||
- '.gitea/workflows/go-unit.yaml'
|
- '.gitea/workflows/go-unit.yaml'
|
||||||
- '!**/*.md'
|
- '!**/*.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:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -37,6 +37,14 @@ on:
|
|||||||
- '.gitea/workflows/integration.yaml'
|
- '.gitea/workflows/integration.yaml'
|
||||||
- '!**/*.md'
|
- '!**/*.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:
|
jobs:
|
||||||
integration:
|
integration:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -18,14 +18,16 @@ on:
|
|||||||
|
|
||||||
# Playwright launches its own `pnpm dev` on :5173, and in host-mode
|
# Playwright launches its own `pnpm dev` on :5173, and in host-mode
|
||||||
# the runner shares the host's port namespace with every other job,
|
# the runner shares the host's port namespace with every other job,
|
||||||
# so two parallel ui-test runs collide on EADDRINUSE. Serialise via a
|
# so two parallel ui-test runs collide on EADDRINUSE. Serialise via the
|
||||||
# singleton concurrency group with queueing — new runs wait their
|
# shared `galaxy-host-runner` concurrency group (also used by go-unit and
|
||||||
# turn instead of cancelling the in-progress one. cancel-in-progress
|
# integration) with queueing — new runs wait their turn instead of
|
||||||
# is explicitly false because Gitea has shown spurious self-cancel
|
# cancelling the in-progress one. The shared group additionally avoids the
|
||||||
# behaviour under cancel-in-progress: true even when no other run
|
# host-workspace teardown race those jobs hit (see go-unit.yaml). New runs
|
||||||
# shares the group.
|
# 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:
|
concurrency:
|
||||||
group: ui-test-singleton
|
group: galaxy-host-runner
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
Reference in New Issue
Block a user