diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 709edf9..b61feec 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -84,10 +84,9 @@ jobs: if: github.event_name != 'pull_request' run: | mkdir -p /tmp/digests - # 获取构建输出的 digest(可能是 list digest) list_digest="${{ steps.build.outputs.digest }}" - # 使用 imagetools inspect 提取内层 manifest digest(假设单平台,所以 Manifests 数组只有一个元素) - manifest_digest=$(docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${list_digest} --format '{{json .Manifests}}' | jq -r '.[0].digest') + # 使用 Go template 条件提取 digest:如果有 Manifests,取第一个的 Digest;否则取顶层 Digest + manifest_digest=$(docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@${list_digest} --format '{{ if .Manifests }}{{ (index .Manifests 0).Digest }}{{ else }}{{ .Digest }}{{ end }}') touch "/tmp/digests/${manifest_digest#sha256:}" - name: Upload digest if: github.event_name != 'pull_request'