fixed: 更严格的build检测

This commit is contained in:
GuanYuankai 2025-11-11 17:41:30 +08:00
parent 4a8ad9481c
commit e44133a558
1 changed files with 37 additions and 14 deletions

View File

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