[Chore] Consolidate published images back to roomote-app and roomote-worker - #119
Merged
Merged
Conversation
…worker Publish two images again instead of eight. Every control-plane service runs from the shared runtime-app target; the container command and ROOMOTE_SERVICE select the service and its env contract. The Compose hardening from #105 (read-only filesystems, dropped capabilities, per-service env contracts, controller-only Docker socket proxy) and the deployment validation from #106 stay in place, adapted to the two-image world. Also authenticate to GHCR in the deployment-acceptance job so baseline pulls cannot fail on package visibility, which is what has blocked every publish since #106 landed: the six new per-service packages defaulted to private and the smoke test pulled them anonymously.
mrubens
force-pushed
the
chore/consolidate-published-images
branch
from
July 10, 2026 19:45
edfb90a to
cd7c003
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
roomote-app,roomote-worker) instead of eight; the six per-service runtime targets from Harden application container privileges and secret scope #105 are removed and every control-plane service runs from the sharedruntime-apptargetROOMOTE_SERVICEenv var (now set per service in Compose) select the service and its environment contract, so the per-service env contracts from Harden application container privileges and secret scope #105 keep working unchangedruntime-appfor the controller role; socket access is still restricted to the controller service via the proxy-onlydocker-apiinternal networkno-new-privileges, tmpfs scratch, socket proxy) and extend the security contract script to assert theROOMOTE_SERVICEwiringunauthorizedonroomote-web:develop).roomote-appandroomote-workerare public, so baseline pulls work either way now, but the job authenticates regardless so a visibility change can never silently block releases again.Why
The eight-image split had no consumers in the real deployment path — Roomote-Ops templates, the Railway deploy, and the provisioning scripts all still reference
roomote-apponly — while costing 12 extra build jobs per publish, 6 extra manifests, and the release-gate breakage above. Publishes to GHCR have been blocked since #106 merged; this restores them.Validation
deploy/scripts/validate-compose-security.shpnpm deployment:validate(all six compose shapes)docker buildx build --checkand a full local build ofruntime-app; verifieddocker,gh,opencode, worker release assets, and the migrate bundle are present and the image runs asroomote-app(uid 10000)pnpm lint:fastpnpm deployment:smokewithBASELINE_VERSION=develop(upgrade/rollback against the currently published image) is running locally; result will be posted as a commentFollow-up
After this merges and publishes, the six orphaned private GHCR packages (
roomote-web,roomote-api,roomote-controller,roomote-bullmq,roomote-preview-proxy,roomote-migrate) can be deleted.