Phase 3d: packaging, deploy & README#9
Merged
Merged
Conversation
…ess image Builder stage uses golang:1.25 with CGO_ENABLED=0 static binaries; runtime stage is gcr.io/distroless/static:nonroot. web/dist is committed so no Node step is needed. Validated: docker build produces a 26 MB relay:ci image and the server binary responds to --help correctly.
Owner
Author
Code reviewFound 1 issue:
Lines 65 to 67 in b749702 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
…Go base, harden demo startup
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
The final Phase 3 sub-project — packaging, deploy, and the portfolio README. Makes Relay runnable in one command and presentable as a front page. No Go source changes (engine untouched;
git diffofinternal/,cmd/,go.mod,go.sumis empty).Dockerfile— multi-stage (golang:1.25builder →gcr.io/distroless/static:nonroot), buildingserver/worker/demointo one ~27 MB image. The server embeds the committedweb/dist, so there's no Node step. StaticCGO_ENABLED=0binaries..dockerignore— keeps the build context lean (excludes.git,web/node_modules,.superpowers,docs).deployments/docker-compose.yml— the end-to-end demo: redis + server + worker(s) + a one-shotdemoload generator (10% fail-rate so the DLQ + requeue are demonstrable). One shared image; workers scale via--scale worker=N..github/workflows/ci.yml— a newdocker buildjob so the Dockerfile can't rot.README.md— portfolio front page: a mermaid architecture diagram, delivery semantics + invariants, the feature list, a Docker quickstart, local-dev commands, project layout, a deploy guide, and a pointer to the design docs.Design & plan
docs/superpowers/specs/2026-06-09-relay-phase3d-packaging-deploy-readme-design.mddocs/superpowers/plans/2026-06-09-relay-phase3d-packaging-deploy-readme.mdTest plan
docker buildsucceeds (distroless image, all three binaries run)docker compose -f deployments/docker-compose.yml configvalidatesdocker compose up):GET /→ 200 (dashboard),/healthz→ ok,/api/queues→["demo"], live/api/queues/demo/stats,/metricspopulated; demo enqueues → workers process → DLQ from failuresgo build ./...,go vet ./...,gofmt -l internal/ cmd/clean;go test -race ./...— all 7 packages pass against a real Redis (no engine changes)