From c13340e06655e2431b018c75c642513f9c5627f0 Mon Sep 17 00:00:00 2001 From: Jonathan Green Date: Sat, 9 May 2026 09:10:27 -0400 Subject: [PATCH] fix(ci): resolve connector digest via buildx imagetools in manifest step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker manifest inspect for a multi-arch OCI image index does not expose the index digest in its JSON output — only per-arch manifest digests are present. The build-image-manifest.mjs script then fails with "could not extract digest from manifest inspect output". Fix: pre-resolve the connector digest in the workflow step using `docker buildx imagetools inspect --format '{{.Manifest.Digest}}'` which properly handles OCI image indexes and returns the index digest. Then pass it explicitly via --connector-digest to bypass the script's internal inspect path. Observed: run 25601541595 build-image-manifest job failed on this step. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/publish-townhouse-images.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-townhouse-images.yml b/.github/workflows/publish-townhouse-images.yml index 430c5dc3..23da0f2e 100644 --- a/.github/workflows/publish-townhouse-images.yml +++ b/.github/workflows/publish-townhouse-images.yml @@ -196,12 +196,20 @@ jobs: MILL_DIGEST=$(cat /tmp/digests/digest-mill/digest-mill.txt) DVM_DIGEST=$(cat /tmp/digests/digest-dvm/digest-dvm.txt) + # Resolve connector digest via buildx imagetools (handles OCI image index + # correctly — docker manifest inspect doesn't expose the index digest directly) + CONNECTOR_TAG="${{ inputs.connector_version || '3.4.1' }}" + CONNECTOR_DIGEST=$(docker buildx imagetools inspect \ + "ghcr.io/toon-protocol/connector:${CONNECTOR_TAG}" \ + --format '{{.Manifest.Digest}}') + # Install zod for manifest schema validation (used by the script) npm install --no-save zod@3 node scripts/build-image-manifest.mjs \ --townhouse-version "${{ steps.version.outputs.version }}" \ - --connector-tag "${{ inputs.connector_version || '3.4.1' }}" \ + --connector-tag "${CONNECTOR_TAG}" \ + --connector-digest "${CONNECTOR_DIGEST}" \ --townhouse-api-digest "$TOWNHOUSE_API_DIGEST" \ --town-digest "$TOWN_DIGEST" \ --mill-digest "$MILL_DIGEST" \