name: Tests · Integration # Full integration suite (testcontainers-driven, ~5–10 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' env: # See go-unit.yaml for the rationale; this disables TLS verify for # actions/checkout against the LAN Gitea host signed by host-Caddy's # internal CA. GIT_SSL_NO_VERIFY: "true" 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