diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d9755ac..06553ca 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -187,18 +187,26 @@ jobs: id: meta run: | set -euo pipefail + # Docker Registry 规范:仓库路径、owner、repo name 必须全小写(Henry_Du/BYW-VoiceHub → henry_du/byw-voicehub) + REPO_OWNER="${GITHUB_REPOSITORY_OWNER,,}" + REPO_NAME="${IMAGE_NAME,,}" SHA="${GITHUB_SHA:-$(git rev-parse HEAD)}" SHORT_SHA="${SHA:0:7}" DATE_TAG="$(date +%Y%m%d)-${SHORT_SHA}" - IMG_FULL="${GITEA_HOST}/${GITHUB_REPOSITORY_OWNER}/${IMAGE_NAME}:${DATE_TAG}" - IMG_LATEST="${GITEA_HOST}/${GITHUB_REPOSITORY_OWNER}/${IMAGE_NAME}:latest" + IMG_FULL="${GITEA_HOST}/${REPO_OWNER}/${REPO_NAME}:${DATE_TAG}" + IMG_LATEST="${GITEA_HOST}/${REPO_OWNER}/${REPO_NAME}:latest" + CACHE_REF_INNER="${GITEA_HOST}/${REPO_OWNER}/${REPO_NAME}:buildcache" echo "tag=${DATE_TAG}" >> "$GITHUB_OUTPUT" echo "full=${IMG_FULL}" >> "$GITHUB_OUTPUT" echo "latest=${IMG_LATEST}" >> "$GITHUB_OUTPUT" + echo "cache_ref=${CACHE_REF_INNER}" >> "$GITHUB_OUTPUT" + echo "repo_owner=${REPO_OWNER}" >> "$GITHUB_OUTPUT" + echo "repo_name=${REPO_NAME}" >> "$GITHUB_OUTPUT" echo "======================================" echo "Image tag : ${DATE_TAG}" echo "Full image : ${IMG_FULL}" echo "Latest image : ${IMG_LATEST}" + echo "Cache ref : ${CACHE_REF_INNER}" echo "======================================" - name: 初始化 Docker Buildx builder(带国内 registry-mirrors + gh-proxy 环境) @@ -266,15 +274,22 @@ jobs: - name: 构建并推送镜像 env: - CACHE_REF: ${{ env.GITEA_HOST }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache + CACHE_REF: ${{ steps.meta.outputs.cache_ref }} SKIP_CACHE: ${{ inputs.skip_build_cache }} IMG_FULL: ${{ steps.meta.outputs.full }} IMG_LATEST: ${{ steps.meta.outputs.latest }} - OCS_SOURCE: ${{ github.server_url }}/${{ github.repository }} + OCS_SOURCE_RAW: ${{ github.server_url }}/${{ github.repository }} OCS_REVISION: ${{ github.sha }} - OCS_CREATED: ${{ github.event.head_commit.timestamp }} + OCS_CREATED_RAW: ${{ github.event.head_commit.timestamp }} run: | set -euxo pipefail + # 兜底空值 & 全小写规范 + OCS_SOURCE="${OCS_SOURCE_RAW,,}" + OCS_CREATED="${OCS_CREATED_RAW:-$(date -u -Iseconds)}" + # 再次保险:所有镜像标签字符串都确认无大写字母(Registry 硬性规范) + IMG_FULL="${IMG_FULL,,}" + IMG_LATEST="${IMG_LATEST,,}" + CACHE_REF="${CACHE_REF,,}" BUILD_ARGS=( --build-arg BUILDKIT_INLINE_CACHE=1 @@ -359,6 +374,13 @@ jobs: GITHUB_REF_NAME: ${{ github.ref_name }} run: | set -euo pipefail + # 全小写规范(Docker Registry 硬性要求 + Gitea raw URL 路径大小写敏感) + IMAGE_NEW="${IMAGE_NEW,,}" + IMAGE_LATEST="${IMAGE_LATEST,,}" + GITHUB_REPOSITORY="${GITHUB_REPOSITORY,,}" + GITHUB_SERVER_URL="${GITHUB_SERVER_URL,,}" + GITEA_HOST="${GITEA_HOST,,}" + IMAGE_NAME="${IMAGE_NAME,,}" # 写私钥到临时文件(避免 stdin 转义问题) SSH_KEY_FILE="$(mktemp -t deploy_ssh_key.XXXXXX)"