Skip to content

Go CLI 20260713.01

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Jul 03:15

Dev Container CLI (Go)

This is the Go rewrite of the @devcontainers/cli. Supported platform: Linux (amd64, arm64).

Installation

Download the binary for your platform and add it to your PATH:

# Linux amd64
curl -Lo devcontainer.tar.gz https://github.com/spin-stack/devcontainer-cli/releases/download/v20260713.01/devcontainer_20260713.01_linux_amd64.tar.gz
tar xzf devcontainer.tar.gz
chmod +x devcontainer
sudo mv devcontainer /usr/local/bin/

# Linux arm64
curl -Lo devcontainer.tar.gz https://github.com/spin-stack/devcontainer-cli/releases/download/v20260713.01/devcontainer_20260713.01_linux_arm64.tar.gz
tar xzf devcontainer.tar.gz
chmod +x devcontainer
sudo mv devcontainer /usr/local/bin/

Changelog

Features

  • 65b78b8 feat(build): --secrets-file → build secrets de BuildKit (divergencia Go-only)
  • ef16b7b feat(build): cablear --docker-compose-path + ajustar 2 diferidos (RW-004/RW-005)
  • eed5a80 feat(build): cablear config.build.cacheFrom (campo muerto)
  • a37a721 feat(build): puente de credenciales del CLI hacia el subproceso docker build
  • 556fb24 feat(changelog): enhance changelog configuration with categorized groups and regex filters
  • 3d18593 feat(check): add SELinux enforcing preflight
  • c4245ff feat(cli): add devcontainer open to launch VS Code in the dev container
  • 6c57d01 feat(cli): add stop and down for workspace lifecycle
  • 676bd97 feat(cli): disambiguate multiple devcontainer.json configs by config_file
  • 3f527a3 feat(config): deep-merge de --override-config (divergencia de paridad aprobada)
  • 51d23aa feat(config): implement --mount-git-worktree-common-dir
  • d1f12c8 feat(coverage): add coverage tasks for E2E and parity contract, update README and .gitignore
  • 0ea5308 feat(coverage): add parity runtime and publish tasks, update README and Taskfile
  • f1a1d1b feat(docker): stream build/compose progress live instead of on exit
  • ab790e0 feat(doctor): comandos check/setup de diagnóstico del host
  • a9f2bee feat(features): make direct-tarball download match the TS CLI
  • 77d354b feat(features): publish reports version; add hermetic publish parity test
  • b8f20a9 feat(features): unificar el grafo de dependencias (RW-002) + override en install (RW-001)
  • 9df1f86 feat(http/cli): contexto+redirects en httpx.Do y tee de --log-file a archivo (RW-014)
  • 1e75c5d feat(image): distribuir el CLI como imagen OCI multi-arch (RW-016)
  • 389b796 feat(oci): RW-007/006/008 — retire dead index types, metadata interop, hermetic auth tests
  • 72d4edd feat(parity): implement sharding for parallel CI jobs and add tests for partitioning
  • 7db986e feat(read-configuration): --cache-key content-addressed (Go-only, aditivo)
  • f0774c5 feat(release): T7 pipeline Linux-only + tag workflow + perf metrics
  • 77975f5 feat(up): --cache-image para arrancar de imagen prebuildeada (Go-only)
  • eccb57f feat: enhance feature installation with transitive dependency resolution and cycle detection
  • 2f2ae79 feat: port upstream #1225 (Dockerfile metadata), #1078 (feature build secrets), #1241 (up --platform)
  • 2ed07f9 feat: resolve upstream bugs #8, #319, #876, #881

Bug fixes

  • 745781b fix(build): defer --output/--push to feature build for Dockerfile configs
  • 373f35a fix(build): omitir BUILDKIT_INLINE_CACHE=1 cuando --cache-to es inline
  • e5d5688 fix(build): preserve sibling .dockerignore on rename (#969)
  • 7d56d5e fix(build): registrar --no-lockfile/--frozen-lockfile públicos + mutua-exclusión
  • c8caff1 fix(ci): correct merged-coverage artifact path + log merged lanes
  • 911cefa fix(cli): 0.88 parity — workspace-folder defaults to cwd, error-path alignment
  • 232f2ac fix(cli): flags hidden/alias faltantes (paridad TS) — cierra hallazgos RW-013
  • 190bc20 fix(cli): restore up parity flags + gate the inventory against the oracle
  • 467b748 fix(config): omit workspaceMount consistency= on Linux (0.88)
  • 4a02ef0 fix(config): port upstream #1213 (colon defaults) and #1261 (worktree custom mount)
  • 64aeee3 fix(config): preserve portsAttributes.protocol and requireLocalPort (spec)
  • 87da481 fix(docker): default the base-image ARG in updateUID.Dockerfile (#1242)
  • ff07003 fix(dockerfile): unbound ARG shadowing ENV, and dockerfile:1 build-context support
  • 878e592 fix(features test): chmod -R 777 the test workspace (parity with TS)
  • 34474cc fix(features): _REMOTE_USER_HOME per-RUN and ${localEnv} in Feature metadata
  • 34e8af3 fix(features): consecutiveId = _ (paridad read-configuration)
  • e705ff0 fix(features): emit dependency mermaid graph for resolve-dependencies
  • e8a4abc fix(features): emit devcontainer-collection.json with preserved key order
  • e86774c fix(features): features test — cd into workspace, match TS report format
  • 4b8c756 fix(features): match TS features-info text rendering (box, tags, manifest order)
  • 67c065b fix(features): omit user/group names in packaged tarballs; document mtime limit
  • 4131c3a fix(features): package single-feature folder (product gap con TS)
  • 2f0e327 fix(features): parse local feature metadata as JSONC
  • c93a2a3 fix(features): resolve-dependencies defaults --workspace-folder to cwd (0.88)
  • 5eff5e7 fix(features): test imprime banner + error de src/test faltante en STDOUT
  • df20932 fix(features,templates): rewrite generate-docs to match TS byte-for-byte
  • c5c1420 fix(http): transporte compartido con proxy + CA uniforme en todos los paths
  • fffa6b3 fix(imagemeta): correct four metadata merge rules to match the spec
  • 4e354a4 fix(lifecycle): stop surfacing the userEnvProbe's benign shell stderr
  • d17abb8 fix(oci,ci): bound registry ops, fail-closed on tag-list errors, unskip OCI tests
  • 6c697e4 fix(oci,mounts,config): identity-token build auth, mount target subst, comma-path mount
  • 9093087 fix(outdated,upgrade): report concrete feature versions; add parity cases
  • 0c5a35c fix(parity): 3 divergencias TS↔Go destapadas por la auditoría de cobertura
  • eb34e19 fix(parity): 5 divergencias + 8 casos nuevos (wave A, batch 1)
  • 4963877 fix(parity): features info verbose emite Published Tags antes de Dependency Tree
  • fc7e231 fix(parity): fixture-path de los casos workspace-secrets (2 inconclusive → matched)
  • c9ae70d fix(release,packaging): prep Docker for release parity, fail-closed packaging, hermetic gitroot test
  • 7d9045e fix(security): enforce disallowed-features blocklist in up/build (0.88 parity)
  • 6c0f191 fix(security): guard feature tarball extraction against path traversal (zip-slip)
  • ae21fe9 fix(taskfile): ts:compile depende de ts:install (reference 0.88)
  • b46e1b4 fix(templates): metadata preserves source key order; cover templates publish/metadata
  • 628a140 fix(up): pull the Dockerfile base image before reading its metadata
  • bfc6f47 fix(upgrade,outdated): validar --feature/--target-version y paridad de la tabla text
  • b0973a6 fix: 0.88 parity — metadata label array, additional-features lockfile, cwd defaults, matrix TS path
  • 90a060c fix: apply --remove-existing-container before initializeCommand (#844) and --label on compose build (#930)
  • b72972b fix: three upstream bugs we reproduced (updateUID chown, cred-helper hang, dotfiles ~)

Internal improvements

  • 702b301 build: versionado CalVer YYYYMMDD.
  • f7f0cc4 ci(parity): emulación QEMU arm64 en el lane runtime
  • f05eaee ci(parity): scope runtime matrix to affected commands on PR, full run daily
  • c929b62 ci(release): add a workflow_dispatch UI button that tags after the gates pass
  • c47c3d2 ci(release): make the image tags immutable-tag-safe
  • aa87de8 ci: alinear el gate de paridad con arm64 experimental + runtime determinista
  • 6e26294 ci: arm64 experimental sólo en workflow_dispatch (no en cada push)
  • 748e000 ci: code coverage nativo (Cobertura) + dependabot (gomod/actions/docker)
  • 8e28c45 ci: harden gates with race detector, govulncheck, and a coverage floor
  • 3093ba1 ci: liberar disco agresivamente en las lanes runtime (el runner moría por disco)
  • 7da3c60 ci: mover data-root de Docker a /mnt en las lanes runtime (No space left on device)
  • f195136 ci: runtime parity — containerd image store + serial + fail-fast builder probe
  • 28958f9 ci: use the official go-task/setup-task action
  • eaba237 refactor(cli): centralize duplicated TS-parity messages into constants
  • 1c87ef1 refactor(cli): extract featureFromMetadata, dedup processInstallFeature
  • 48cb09b refactor(cli): extract prepareDockerfileBuild shared by up and build
  • cae1faf refactor(cli): extract resolveComposeProjectName from fromCompose
  • 3cd1c37 refactor(cli): give runOutdated an options struct
  • 9eda226 refactor(cli): introduce upRunner/buildRunner receivers for up/build
  • e5a491d refactor(cli): split helpers.go grab-bag by concept
  • 16a712a refactor(cli): thread cmd.Context() through commands, cancel on signal
  • 811cd22 refactor(cli): tidy runUp and fromCompose
  • 70ee1e2 refactor(compose): drop dead code (Down, v1 fallback, IsV2)
  • 3d232fa refactor(config): phased VariableResolver with an inline ${...} scanner
  • 012191e refactor(coverage,ci): extract Taskfile bash to scripts, unify coverage, reuse in CI
  • 8c269d4 refactor(docker): migrate off deprecated docker/docker to moby/moby v29
  • 76f6c48 refactor(dockerfile): drop all regexp; delete dead code; add missing build-context syntax directive
  • c275036 refactor(dockerfile): parse with BuildKit's real parser instead of regex
  • 94283d1 refactor(errors): errors.As over hand-rolled walk; %w wraps; drop "failed to"
  • c01f897 refactor(exec): borrar PTY muerto + endurecer contrato 128+N (RW-003/RW-010)
  • 28f7ee7 refactor(exec): enhance concurrent output handling with syncWriter for OSRunner
  • d508355 refactor(features): embed README templates from files; add hermetic docs tests
  • 2b87c28 refactor(go): thread context, fix hook/write-path bugs, drop stutter
  • c7c66e2 refactor(lifecycle): run hooks via the Docker exec API (drop docker exec shell-out)
  • e5b8f7d refactor(metadata): extract compactTemplateMetadata function and add tests
  • 6bfb04b refactor(parity): streamline parity matrix tasks and enhance reporting
  • 2d90641 refactor(seams): introduce four small interfaces for external effects (RW-011)
  • fb0fc3b refactor(tests): enhance features test validation and add E2E scenario
  • 0f5296d refactor(tests): enhance test result reporting and add new test cases
  • 2ca7742 refactor(tests): separate unit and integration tests, enhance parity filtering
  • 3c68460 refactor(workflows): streamline task commands and enhance parity matrix structure
  • c0582c8 refactor: add coverage task and improve context handling in OCI client
  • 86a4647 refactor: delete dead internal/clihost package; use struct{} sets
  • ac3e0ac refactor: drop low-value regexp from compose/merge/outdated (perf + clarity)
  • f8657b5 refactor: eliminar código muerto (staticcheck U1000)
  • 6b462b9 refactor: enhance container labeling in test setup to prevent conflicts
  • ed53c71 refactor: flatten internal/core/* to internal/*
  • 71a725c refactor: remove legacy migration scripts and tests
  • 6bfa4f1 refactor: replace boolean/variadic flag args with explicit options
  • 7cf85a4 refactor: resolve docker context + git root in-process (drop docker/git shell-outs)
  • a8d28a4 refactor: streamline variable substitution methods and enhance template rendering
  • 0e24e82 refactor: use map[string]struct{} for membership sets

Other changes

  • 766692d Bump reference a v0.88.0, binario estático, README
  • 314be71 Import Go dev container CLI (parity-validated) + TS reference submodule
  • 092f8ab Merge pull request #5 from spin-stack/dependabot/github_actions/actions-cde9163d52
  • 5329f47 deps: parchear vulnerabilidades (crypto/net/otel)
  • f3ed0e0 docs+release: fix release URLs/tags, image contract, and README scope
  • 29eb478 license: relicenciar de MIT a Apache 2.0
  • 0a78e9f merge: RW-002/001 features graph (T1)
  • cabf099 merge: RW-003 exec Linux + PTY delete (T2)
  • 230dcaf merge: RW-004/005 compose-path + deferred (T3)
  • 70e1c90 merge: RW-007/006/008 oci (T4)
  • c9c2a28 merge: RW-011 seams (T5 keystone)
  • 3495f0d merge: RW-012 cov-docker
  • 08ac8de merge: RW-012 cov-lifecycle
  • 8ba7e99 merge: RW-012 cov-oci
  • 75cc41f merge: RW-012 templates + cross-layer (T-cov-templates2)
  • 72a271c merge: RW-013 flag inventory (T6)
  • 934b758 merge: RW-014 http ctx/redirects + log-file (T-http)
  • 331a42a merge: RW-015/017 release (T7)
  • 1bf69e9 merge: RW-016 OCI image (T-image)
  • 1265322 merge: fix/build-lockfile-flags
  • 4681785 merge: fix/features-package-single
  • b25cdfe merge: fix/features-test-missing-folders
  • c89cdfc merge: fix/upgrade-outdated
  • 10bf153 revert(parity): drop expect_ts_failure; reuse divergence was a setup artifact