{{ message }}
devcontainer: add prebuild-based dev environment + CI#88
Merged
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>
ivanetchart
approved these changes
Jun 12, 2026
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>
bilby91
added a commit
that referenced
this pull request
Jun 24, 2026
Document everything merged since v0.3.0: Podman backend + checkpoint/restore (#98), compose feature security metadata + entrypoint chaining (#103), Podman compose health probing (#102), deps bump (#101), and the prebuild dev-environment / CI tooling (#88–#93). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

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