v0.1.2
Fixed
- runtime/docker — switch image builds to BuildKit (
Version: build.BuilderBuildKit). The classic builder synthesizes one intermediate container per Dockerfile step and routes every container API through dockerd's authorization pipeline; behind an authz plugin (e.g. DAP'sdap-authz) this turned a sub-second build into a multi-minute one (~140× slowdown observed on a 7-step Dockerfile against a 7.7 GB base). BuildKit uses a single streaming session and is unaffected. BuildKit is now a hard requirement — Docker Engine has shipped with it enabled by default since 23.0 (Feb 2023). (#47) - runtime/docker — pre-pull
FROMimages via the classicImagePullAPI before invokingImageBuild. BuildKit refuses remote metadata resolution without an active session ("no active sessions"), even for fully anonymous public-image pulls; seeding the local image store side-steps the session requirement without pullinggithub.com/moby/buildkitin as a direct dep. (#47) - runtime/docker — preserve symlinks in the build-context tar.
tarDirectorywas emittingTypeSymlinkentries with an emptyLinkname(passing""totar.FileInfoHeaderinstead ofos.Readlink(path)); some tar readers reject those as malformed and abort the build mid-stream, which broke compose-primary contexts containingnode_modules/.bin/*or similar bin-symlinks. (#47) - useruid / feature — drop the
# syntax=docker/dockerfile:1.4directive from generated Dockerfiles. The instructions in use (ARG,FROM $ARG,USER,COPY,RUN) are all handled by buildkit's built-in frontend; declaring an external frontend forces buildkit to pulldocker/dockerfile:*before parsing, which needs a session for credential forwarding (we don't open one) and hangs indefinitely behind broken registry mirrors. Test guards added so the directive can't be reintroduced. (#47, #48) - events — populate
BuildCompletedEvent.DurationMs. The field was declared but never set in the event-bus translator, so every completion shipped withDurationMs == 0regardless of actual wall-clock duration. Duration is now measured in the bus (start stamped inBuildChan, reset on every call so each build is timed independently). (#46)
Build
- ci — bump
actions/setup-goto v6,actions/checkoutto v6,golangci/golangci-lint-actionto v9. (#40, #41, #42)
Full Changelog: v0.1.1...v0.1.2