diff --git a/.gitea/workflows/build-push.yml b/.gitea/workflows/build-push.yml index 67514fe..33aa397 100644 --- a/.gitea/workflows/build-push.yml +++ b/.gitea/workflows/build-push.yml @@ -3,18 +3,19 @@ name: Build and Push Edge Proxy Image on: create: tags: - - 'v*.*.*' # 1. 触发器:在创建 Tag 时运行 + - 'v*.*.*' jobs: build-and-push: - runs-on: arm-builder # 确保这仍然是您新 Runner 的标签 + runs-on: arm-builder steps: + # 步骤 1: 手动检出代码 (使用 $GITEA_REF) - name: Manual Checkout run: | set -e - echo "正在手动检出代码... (生产 Tag 模式)" + echo "正在手动检出代码... (生产 Tag 模式 v2)" REPO_DIR="repo" rm -rf $REPO_DIR @@ -22,38 +23,60 @@ jobs: HARDCODED_REPO_URL="http://192.168.0.75:3000/guanyuankai/bonus-edge-proxy" - # 2. (关键) 检查 $GITEA_REF_NAME (这应该是您的 Tag 名称, e.g., "v1.1.2") - echo "检查 Gitea 环境变量 (GITEA_REF_NAME)..." - if [ -z "$GITEA_REF_NAME" ]; then - echo "::error::GITEA_REF_NAME 环境变量未设置!" + # ----------------- (关键变更) ----------------- + # 1. 改为检查更底层的 $GITEA_REF + echo "检查 Gitea 环境变量 (GITEA_REF)..." + if [ -z "$GITEA_REF" ]; then + echo "::error::GITEA_REF 环境变量未设置!" echo "::error::此工作流应由一个 Tag 触发。" exit 1 fi - echo "Tag 名称 (GITEA_REF_NAME) = $GITEA_REF_NAME" + echo "GITEA_REF = $GITEA_REF" + + # 2. 从 $GITEA_REF (例如 "refs/tags/v1.1.3") 中提取 Tag 名称 + TAG_NAME=$(echo $GITEA_REF | sed 's|refs/tags/||') + + if [ -z "$TAG_NAME" ] || [ "$TAG_NAME" = "$GITEA_REF" ]; then + echo "::error::无法从 GITEA_REF ($GITEA_REF) 提取 Tag 名称" + exit 1 + fi + echo "提取的 Tag 名称 = $TAG_NAME" + # ----------------- (变更结束) ----------------- REPO_URL_AUTH=$(echo "$HARDCODED_REPO_URL" | sed "s|://|://${{ gitea.actor }}:${{ secrets.cicd }}@|") REPO_URL_WITH_CREDS="${REPO_URL_AUTH}.git" - # 3. (关键) 检出 $GITEA_REF_NAME (您的 Tag) - echo "开始克隆 Tag: $GITEA_REF_NAME 到 $REPO_DIR 目录..." - git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS $REPO_DIR + # 3. 使用提取的 $TAG_NAME 检出代码 + echo "开始克隆 Tag: $TAG_NAME 到 $REPO_DIR 目录..." + git clone --quiet --branch $TAG_NAME $REPO_URL_WITH_CREDS $REPO_DIR echo "代码检出成功。" + # 步骤 2: 登录 Gitea 容器注册表 - name: Login to Gitea Container Registry run: | echo ${{ secrets.cicd }} | docker login http://192.168.0.75:3000 -u ${{ gitea.actor }} --password-stdin + # 步骤 3: 构建并推送镜像 (使用 $TAG_NAME) - name: Build and Push Image run: | set -e cd repo - # 4. (关键) 从 $GITEA_REF_NAME 动态生成版本号 - VERSION=$(echo $GITEA_REF_NAME | sed 's/v//') + # 4. (关键) 我们需要重新定义 $TAG_NAME,因为 'run:' 步骤不共享 Shell 变量 + # (或者,我们可以再次执行提取操作) + + if [ -z "$GITEA_REF" ]; then + echo "::error::GITEA_REF 环境变量在步骤 3 中未找到!" + exit 1 + fi + + TAG_NAME=$(echo $GITEA_REF | sed 's|refs/tags/||') + VERSION=$(echo $TAG_NAME | sed 's/v//') + if [ -z "$VERSION" ]; then - echo "::error::无法从 GITEA_REF_NAME ($GITEA_REF_NAME) 提取版本号" + echo "::error::无法从 TAG_NAME ($TAG_NAME) 提取版本号" exit 1 fi