feat(wfe-buildkit): rewrite to use buildkit-client gRPC instead of CLI

Replaced buildctl CLI shell-out with direct gRPC communication via
buildkit-client crate. Connects to buildkitd daemon over Unix socket
or TCP with optional TLS.

Implementation:
- connect() with custom tonic UnixStream connector
- execute_build() implementing the solve protocol directly against
  ControlClient (session setup, file sync, frontend attributes)
- Extracts digest from containerimage.digest in solve response

Added custom lima template (test/lima/wfe-test.yaml) that provides
both buildkitd and containerd with host-forwarded Unix sockets for
reproducible integration testing.

E2E tests against real buildkitd daemon via WFE_BUILDKIT_ADDR env var.
54 tests total. 89% line coverage (cargo-llvm-cov with E2E).
This commit is contained in:
2026-03-26 11:18:22 +00:00
parent 30b26ca5f0
commit b02da21aac
4 changed files with 773 additions and 665 deletions

View File

@@ -16,6 +16,12 @@ async-trait = { workspace = true }
tracing = { workspace = true }
thiserror = { workspace = true }
regex = { workspace = true }
buildkit-client = { git = "https://github.com/AprilNEA/buildkit-client.git", branch = "master", default-features = false }
tonic = "0.12"
tower = "0.4"
hyper-util = { version = "0.1", features = ["tokio"] }
uuid = { version = "1", features = ["v4"] }
tokio-stream = "0.1"
[dev-dependencies]
pretty_assertions = { workspace = true }