From 513f79424a8df03c5df07bec5781c433cfcc968f Mon Sep 17 00:00:00 2001 From: C3H3-AI Date: Tue, 15 Sep 2026 13:38:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20HA=20builder=20?= =?UTF-8?q?action=20=E7=9A=84=20tag=20=E5=BC=95=E7=94=A8=EF=BC=887.2.0=20-?= =?UTF-8?q?>=202026.09.0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build Add-on Image 在合并后首次运行即失败: ##[error]Can't find 'action.yml', 'action.yaml' or 'Dockerfile' for action 'home-assistant/builder/actions/prepare-multi-arch-matrix@7.2.0'. 根因:home-assistant/builder 存在两条版本线。 - 7.x(7.0 / 7.1 / 7.2.0):旧版 builder,**仓库内没有 actions/ 目录** - 2026.x(2026.09.0 等):新版,含 actions/{build-image, prepare-multi-arch-matrix,publish-multi-arch-manifest,cosign-verify} 实测对比(两个 tag 各自的 clone): tag 7.2.0 → azure-pipelines.yml builder.sh build.json Dockerfile ... actions/ 不存在 tag 2026.09.0 → actions/ action.yml ...(4 个子 action 齐全) 官方 README 示例中的 @[version] 指的是 releases 页面上的 tag, 即日历版本(2026.09.0),而非 7.x 那条线。此前取了 7.2.0 属实误判。 --- .github/workflows/build-image.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 93777a3..9d9bfa4 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -59,7 +59,7 @@ jobs: - name: Get build matrix id: matrix - uses: home-assistant/builder/actions/prepare-multi-arch-matrix@7.2.0 + uses: home-assistant/builder/actions/prepare-multi-arch-matrix@2026.09.0 with: architectures: ${{ env.ARCHITECTURES }} image-name: ${{ env.IMAGE_NAME }} @@ -79,7 +79,7 @@ jobs: - uses: actions/checkout@v4 - name: Build image - uses: home-assistant/builder/actions/build-image@7.2.0 + uses: home-assistant/builder/actions/build-image@2026.09.0 with: arch: ${{ matrix.arch }} container-registry-password: ${{ secrets.GITHUB_TOKEN }} @@ -99,7 +99,7 @@ jobs: packages: write steps: - name: Publish multi-arch manifest - uses: home-assistant/builder/actions/publish-multi-arch-manifest@7.2.0 + uses: home-assistant/builder/actions/publish-multi-arch-manifest@2026.09.0 with: architectures: ${{ env.ARCHITECTURES }} container-registry-password: ${{ secrets.GITHUB_TOKEN }} From 5d5f961f41e7c90454f4bba01b9e021c9ec27219 Mon Sep 17 00:00:00 2001 From: C3H3-AI Date: Tue, 15 Sep 2026 14:05:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20GHCR=20=E9=95=9C=E5=83=8F=E5=90=8D?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E5=B0=8F=E5=86=99=EF=BC=88owner=20C3H3-AI=20?= =?UTF-8?q?=E5=90=AB=E5=A4=A7=E5=86=99=E5=AF=BC=E8=87=B4=20buildx=20?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build Add-on Image 第二次运行实际进入构建阶段,buildx 报错: ##[error]buildx failed with: ERROR: failed to build: invalid tag "ghcr.io/C3H3-AI/amd64-ai-proxy:1.1.0b13": repository name must be lowercase 根因:HA 官方 builder 的 prepare-multi-arch-matrix 与 publish-multi-arch-manifest 两个 action,其 registry-prefix 默认值均为 ghcr.io/${{ github.repository_owner }},而本仓库 owner 是 "C3H3-AI"(含大写)。 Docker/OCI 规范要求 repository name 必须全小写。 改动(3 处,统一为 ghcr.io/c3h3-ai): - prepare-multi-arch-matrix: 显式传 registry-prefix - publish-multi-arch-manifest: 显式传 registry-prefix - verify job: 手写的 IMAGE 变量由 github.repository_owner 改为字面量 与 config.yaml 的 image: "ghcr.io/c3h3-ai/ai-proxy" 保持一致。 注:上一轮的 tag 引用修复(7.2.0 -> 2026.09.0)已生效—— 本次 init job(Resolve version & matrix)全部步骤通过, build job 也真正进入了 buildx 构建阶段,不再是 Set up job 失败。 --- .github/workflows/build-image.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 9d9bfa4..bfcf0ae 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -63,6 +63,11 @@ jobs: with: architectures: ${{ env.ARCHITECTURES }} image-name: ${{ env.IMAGE_NAME }} + # 必须显式传小写前缀。该 action 默认取 github.repository_owner, + # 而本仓库 owner 是 "C3H3-AI"(含大写),GHCR 会拒绝: + # invalid tag "ghcr.io/C3H3-AI/amd64-ai-proxy:1.1.0b13": + # repository name must be lowercase + registry-prefix: ghcr.io/c3h3-ai build: name: Build ${{ matrix.arch }} @@ -104,6 +109,7 @@ jobs: architectures: ${{ env.ARCHITECTURES }} container-registry-password: ${{ secrets.GITHUB_TOKEN }} image-name: ${{ env.IMAGE_NAME }} + registry-prefix: ghcr.io/c3h3-ai image-tags: | ${{ needs.init.outputs.version }} latest @@ -119,7 +125,9 @@ jobs: - name: Verify manifest tag matches config.yaml version run: | set -euo pipefail - IMAGE="ghcr.io/${{ github.repository_owner }}/${IMAGE_NAME}" + # 小写硬编码,与 build/manifest 两个 job 的 registry-prefix 保持一致 + # (owner 是 C3H3-AI,GHCR 不接受大写) + IMAGE="ghcr.io/c3h3-ai/${IMAGE_NAME}" VERSION="${{ needs.init.outputs.version }}" echo "Checking ${IMAGE}:${VERSION}" if ! docker manifest inspect "${IMAGE}:${VERSION}" >/dev/null 2>&1; then