From 277347498461a40725391b66d6e271f503cd6e37 Mon Sep 17 00:00:00 2001 From: Valerio Date: Wed, 10 Jun 2026 15:30:39 +0200 Subject: [PATCH] chore: release v0.6.9 Publish the multi-arch Docker image with Buildx instead of the legacy docker driver, whose GHCR push intermittently failed with 'unknown blob'. The manifest list is now assembled registry-side with `imagetools create`. This also unblocks the Homebrew formula update, which depends on the Docker job. No library or CLI behavior changes. --- .github/workflows/release.yml | 19 +++++++++++-------- CHANGELOG.md | 5 +++++ Cargo.lock | 14 +++++++------- Cargo.toml | 2 +- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ad94a3..ef9ca15 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -172,29 +172,32 @@ jobs: done ls -laR binaries-*/ - # Build per-arch images with plain docker build (no buildx manifest nesting) + # Build each arch with buildx (the docker-container driver from + # setup-buildx-action), pushing straight to the registry. Plain + # `docker build --push` uses the legacy docker driver, whose GHCR push + # path intermittently fails with "ERROR: unknown blob"; buildx's registry + # exporter does not. The multi-arch list is then assembled registry-side + # with `imagetools create` (no local manifest store, so no blob races). - name: Build and push run: | tag="${GITHUB_REF#refs/tags/}" # amd64 - docker build -f Dockerfile.ci --build-arg BINARY_DIR=binaries-x86_64-unknown-linux-gnu \ + docker buildx build -f Dockerfile.ci --build-arg BINARY_DIR=binaries-x86_64-unknown-linux-gnu \ --platform linux/amd64 -t ghcr.io/0xmassi/webclaw:${tag}-amd64 --push . # arm64 - docker build -f Dockerfile.ci --build-arg BINARY_DIR=binaries-aarch64-unknown-linux-gnu \ + docker buildx build -f Dockerfile.ci --build-arg BINARY_DIR=binaries-aarch64-unknown-linux-gnu \ --platform linux/arm64 -t ghcr.io/0xmassi/webclaw:${tag}-arm64 --push . - # Multi-arch manifest - docker manifest create ghcr.io/0xmassi/webclaw:${tag} \ + # Multi-arch manifest list, assembled from the already-pushed per-arch tags + docker buildx imagetools create -t ghcr.io/0xmassi/webclaw:${tag} \ ghcr.io/0xmassi/webclaw:${tag}-amd64 \ ghcr.io/0xmassi/webclaw:${tag}-arm64 - docker manifest push ghcr.io/0xmassi/webclaw:${tag} - docker manifest create ghcr.io/0xmassi/webclaw:latest \ + docker buildx imagetools create -t ghcr.io/0xmassi/webclaw:latest \ ghcr.io/0xmassi/webclaw:${tag}-amd64 \ ghcr.io/0xmassi/webclaw:${tag}-arm64 - docker manifest push ghcr.io/0xmassi/webclaw:latest homebrew: name: Update Homebrew diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e6f8dd..cc21d32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +## [0.6.9] - 2026-06-10 + +### Fixed +- The multi-arch Docker image (linux/amd64 + linux/arm64) now publishes reliably on each release. The build moved to Buildx so registry pushes no longer fail intermittently, and the Homebrew formula update that depends on it is no longer skipped. + ## [0.6.8] - 2026-06-10 ### Fixed diff --git a/Cargo.lock b/Cargo.lock index 5f0d058..b8a1d23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3221,7 +3221,7 @@ dependencies = [ [[package]] name = "webclaw-cli" -version = "0.6.8" +version = "0.6.9" dependencies = [ "clap", "dotenvy", @@ -3242,7 +3242,7 @@ dependencies = [ [[package]] name = "webclaw-core" -version = "0.6.8" +version = "0.6.9" dependencies = [ "ego-tree", "once_cell", @@ -3260,7 +3260,7 @@ dependencies = [ [[package]] name = "webclaw-fetch" -version = "0.6.8" +version = "0.6.9" dependencies = [ "async-trait", "bytes", @@ -3287,7 +3287,7 @@ dependencies = [ [[package]] name = "webclaw-llm" -version = "0.6.8" +version = "0.6.9" dependencies = [ "async-trait", "reqwest", @@ -3300,7 +3300,7 @@ dependencies = [ [[package]] name = "webclaw-mcp" -version = "0.6.8" +version = "0.6.9" dependencies = [ "dirs", "dotenvy", @@ -3320,7 +3320,7 @@ dependencies = [ [[package]] name = "webclaw-pdf" -version = "0.6.8" +version = "0.6.9" dependencies = [ "pdf-extract", "thiserror", @@ -3329,7 +3329,7 @@ dependencies = [ [[package]] name = "webclaw-server" -version = "0.6.8" +version = "0.6.9" dependencies = [ "anyhow", "axum", diff --git a/Cargo.toml b/Cargo.toml index c9e4670..fc3a2c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/*"] [workspace.package] -version = "0.6.8" +version = "0.6.9" edition = "2024" license = "AGPL-3.0" repository = "https://github.com/0xMassi/webclaw"