devcontainer: add prebuild-based dev environment + CI#88
Conversation
Mirrors the crunchloop/dap devcontainer strategy: a two-file build split where CI prebuilds a multi-arch toolchain image and the runtime config just pulls it. - devcontainer-build.json: base:debian + Go 1.26, Node 22, github-cli, docker-in-docker, and local golangci-lint (v2.5.0, pinned to Makefile) and claude-code features. - devcontainer.json + docker-compose.yml: pull the prebuilt image; dind (privileged) so the integration suite can drive docker compose. - post-create.sh: persist Claude config across rebuilds + go mod download. - devcontainer-cache.yml: multi-arch (amd64/arm64) prebuild on main, merged into a :latest manifest on GHCR. - devcontainer-release.yml: publish local features. The Apple container backend stays darwin/arm64-only and is not built in this Linux container, matching the Linux CI jobs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 2 hours, 21 minutes, and 46 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Drop node, vscode-server, and the claude-code feature, plus all vscode customizations and the claude-config volume/symlink plumbing that only existed for Claude Code. The image is now base + Go, github-cli, docker-in-docker, make, and the golangci-lint local feature. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sets up a devcontainer for this repo using the same strategy as
crunchloop/dap— a two-file build split where CI prebuilds a multi-arch toolchain image and the runtime config just pulls it.Build
devcontainer-build.json— heavy image built in CI:base:debian+ Go 1.26, Node 22 (for Claude Code), github-cli, docker-in-docker, vscode-server,make, plus local features.devcontainer.json+docker-compose.yml— runtime config pullsghcr.io/crunchloop/devcontainer/devcontainer:latest;privilegedfor docker-in-docker sogo test -tags=integration ./test/integration/...can drivedocker compose.post-create.sh— persists Claude config across rebuilds +go mod download.Local features (published like dap's)
golangci-lint— pinned to v2.5.0, matching theMakefileandci.ymllint job.claude-code— Claude Code CLI (npm-based).CI
devcontainer-cache.yml— multi-arch (amd64/arm64) prebuild on pushes tomaintouching.devcontainer/**, merged into a:latestmanifest on GHCR.devcontainer-release.yml— publishes the local features (manual dispatch).Repo-specific departures from dap
Notes
containerbackend (runtime/applecontainer) is darwin/arm64-only and is not built in this Linux container, matching the Linux CI jobs (make bridgeno-ops). Use a native macOS checkout for that backend.devcontainer-cache.ymlruns onmain(or viaworkflow_dispatch); until then "Reopen in Container" can't pull:latest.🤖 Generated with Claude Code