Context
The top-level docker-compose.yml in this repo serves two purposes:
- Example / self-hosting deployment reference.
- Source of truth for the docker-compose bundled into freeshard-controller core-version directories (
freeshard-controller-backend/data/core-versions/vN/).
Today, the image tag in docker-compose.yml is bumped manually via just set-version X.Y.Z as part of the release process. The traefik tag and other service versions (postgres, web-terminal) drift without an automated signal.
Problem
Manual sync means:
- freeshard-controller core-versions lag behind shard_core's reference compose (e.g. traefik still pinned to v2.6 in controller v8 while shard_core moved to v3.6 around 0.35.6).
- Easy to forget dependency bumps (postgres major version, traefik major version) when cutting a shard_core release.
- No enforcement that the example compose matches what shard_core was tested against.
Proposal
On new release (tag push or release published), run automation that:
- Validates
docker-compose.yml service image tags match expected versions (shard_core tag == release tag; traefik/postgres tags match a declared baseline).
- Optionally auto-bumps
web-terminal image tag to latest web-terminal release.
- Publishes the compose as a release artifact so freeshard-controller can fetch it deterministically (ties into the sync issue in freeshard-controller).
Acceptance
- CI check fails if
docker-compose.yml drifts from expected service versions.
- Release workflow attaches
docker-compose.yml to the GitHub release.
Context
The top-level
docker-compose.ymlin this repo serves two purposes:freeshard-controller-backend/data/core-versions/vN/).Today, the image tag in
docker-compose.ymlis bumped manually viajust set-version X.Y.Zas part of the release process. The traefik tag and other service versions (postgres, web-terminal) drift without an automated signal.Problem
Manual sync means:
Proposal
On new release (tag push or release published), run automation that:
docker-compose.ymlservice image tags match expected versions (shard_core tag == release tag; traefik/postgres tags match a declared baseline).web-terminalimage tag to latest web-terminal release.Acceptance
docker-compose.ymldrifts from expected service versions.docker-compose.ymlto the GitHub release.