build(playground): publish a playground image served by Caddy - #1541
Merged
joshunrau merged 2 commits intoSep 14, 2026
Merged
Conversation
Give the compose playground service an image key so the release matrix builds and pushes open-data-capture-playground alongside api, gateway and web. The runner stage is now caddy:2.7-alpine serving the static dist instead of node with http-server, and the build stages move from node:iron to node:lts-krypton to satisfy the repo's engines field. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LuTyaGy7rvpBJ71mVKWnkv
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
playgroundcompose service animage:key (ghcr.io/douglasneuroinformatics/open-data-capture-playground). The release matrix already selects every service with bothbuildandimage, sorelease.yamlneeds no edit and the playground image now ships alongside api, gateway and web, taggedlatestand the bare version.node+http-serverrunner withcaddy:2.7-alpineserving the staticdist/, using a Caddyfile identical toapps/web's (gzip/zstd, SPA fallback toindex.html). The image carries no Node.node:irontonode:lts-kryptonto satisfy the rootenginesfield, matching the other app Dockerfiles.apps/playground/AGENTS.md.Side effect:
docker compose --profile playground upnow pulls the published image instead of building locally, like the other services.Verification
docker compose configthrough the workflow's jq filter now yields four matrix legs including playground.nodebinary;/and unknown paths returnindex.html;esbuild.wasmserves asapplication/wasmwith gzip; JS and/runtime/v1/*serve astext/javascript.?files=share link (pre-fix(playground-url): carry the share link payload in the URL fragment #1539 format) also opened correctly.linux/amd64,linux/arm64) build and GHCR push, which first run in the Release workflow. No unit or e2e tests added; nothing in either suite exercises a Dockerfile or compose file.🤖 Generated with Claude Code