devcontainer: add prebuild-based dev environment + CI by bilby91 · Pull Request #88 · crunchloop/devcontainer · GitHub
Skip to content

devcontainer: add prebuild-based dev environment + CI#88

Merged
bilby91 merged 2 commits into
mainfrom
devcontainer-setup
Jun 12, 2026
Merged

devcontainer: add prebuild-based dev environment + CI#88
bilby91 merged 2 commits into
mainfrom
devcontainer-setup

Conversation

@bilby91

@bilby91 bilby91 commented Jun 12, 2026

Copy link
Copy Markdown
Member

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 pulls ghcr.io/crunchloop/devcontainer/devcontainer:latest; privileged for docker-in-docker so go test -tags=integration ./test/integration/... can drive docker 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 the Makefile and ci.yml lint job.
  • claude-code — Claude Code CLI (npm-based).

CI

  • devcontainer-cache.yml — multi-arch (amd64/arm64) prebuild on pushes to main touching .devcontainer/**, merged into a :latest manifest on GHCR.
  • devcontainer-release.yml — publishes the local features (manual dispatch).

Repo-specific departures from dap

  • docker-in-docker instead of backing services — this repo's only runtime dependency is Docker itself (for the integration suite), not postgres/rabbitmq/etc.
  • Dropped dap's ECR pull-through-cache invalidation job — that used dap's AWS role and tenant infra.

Notes

  • The Apple container backend (runtime/applecontainer) is darwin/arm64-only and is not built in this Linux container, matching the Linux CI jobs (make bridge no-ops). Use a native macOS checkout for that backend.
  • The prebuild image won't exist until devcontainer-cache.yml runs on main (or via workflow_dispatch); until then "Reopen in Container" can't pull :latest.

🤖 Generated with Claude Code

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>
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

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 bilby91 merged commit ae4dd61 into main Jun 12, 2026
5 of 6 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants