Files
SpaceWanderer/docker-compose.ci.yml
kamilkrzywda f6d2876a44 ci: docker compose (prod + isolated e2e) and Gitea CI pipeline
Prod compose: Traefik labels for space-wanderer.dev.kkhost.pl, ./db volume mount.
CI compose: project space-wanderer-ci on external network space-wanderer-ci-e2e with
the app pinned to static IP 172.39.0.10 (Flight-Ops mechanism verbatim, distinct
network name so both stacks coexist on the shared dind daemon), fresh named DB volume
per run. ci.yml: single 'build + unit + e2e' job — required status check name kept;
flaky-uplink retry loops, dep/browser caches, dind cleanup + prune carried over.
2026-09-28 15:56:18 +00:00

30 lines
1.2 KiB
YAML

# Isolated e2e stack for CI (.gitea/workflows/ci.yml) — runs on the runner's shared dind
# daemon under project name space-wanderer-ci (distinct from production). Joins the external
# network space-wanderer-ci-e2e that the workflow attaches the job container to; the app is reached
# at its STATIC IP http://172.39.0.10:3000 — DNS bypassed for the browser because Chromium
# got ERR_SSL_PROTOCOL_ERROR via the hostname while node-side HTTP worked (the `app` alias
# stays as a convenience). Single deterministic address; survives `docker compose restart space-wanderer`.
# The build context is tarred by the compose client in the job and sent over DOCKER_HOST,
# so nothing here needs to be visible from inside dind; game state lives in a named volume
# (fresh per run — CI cleanup removes it — survives `docker compose restart space-wanderer` for
# e2e/state.spec.ts).
services:
space-wanderer:
build: .
image: space-wanderer-ci
volumes:
- space-wanderer-db:/app/db
networks:
space-wanderer-ci-e2e:
aliases:
- app
ipv4_address: 172.39.0.10
networks:
space-wanderer-ci-e2e:
name: space-wanderer-ci-e2e
external: true
volumes:
space-wanderer-db: