Files
galaxy-game/.gitea/workflows/integration.yaml
T
Ilia Denisov 046857177e
Tests · Go / test (push) Has been cancelled
Tests · Go / test (pull_request) Has been cancelled
Tests · Integration / integration (pull_request) Has been cancelled
Tests · UI / test (push) Waiting to run
Tests · UI / test (pull_request) Successful in 3m11s
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.
2026-05-31 18:11:34 +02:00

74 lines
2.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Tests · Integration
# Full integration suite (testcontainers-driven, ~510 minutes). Heavy
# enough that we do not run it on every push to a feature branch — only
# when there is an open PR aimed at `development`/`main`, or after a
# merge into `development`. The unit jobs (`go-unit.yaml`,
# `ui-test.yaml`) keep guarding fast feedback on every push.
on:
pull_request:
branches:
- development
- main
paths:
- 'backend/**'
- 'gateway/**'
- 'game/**'
- 'pkg/**'
- 'ui/core/**'
- 'integration/**'
- 'go.work'
- 'go.work.sum'
- '.gitea/workflows/integration.yaml'
- '!**/*.md'
push:
branches:
- development
paths:
- 'backend/**'
- 'gateway/**'
- 'game/**'
- 'pkg/**'
- 'ui/core/**'
- 'integration/**'
- 'go.work'
- 'go.work.sum'
- '.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
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.work
cache: true
- name: Run integration suite
# `make integration` precleans leftover docker-compose state and
# then runs every test under integration/ serially (-p=1
# -parallel=1, 15-minute per-test timeout). Testcontainers
# reaches the host's docker daemon via the socket Gitea exposes
# to the runner; the workflow inherits the same access the
# runner has.
run: make -C integration integration