diff --git a/.gitea/workflows/build-push.yml b/.gitea/workflows/build-push.yml index 49bba30..1b97dbb 100644 --- a/.gitea/workflows/build-push.yml +++ b/.gitea/workflows/build-push.yml @@ -1,83 +1,63 @@ -name: Build and Push Edge Proxy Image - -on: - push: - branches: - - cicd-testing # 保持在测试分支触发 - -jobs: - build-and-push: - runs-on: arm64 - - steps: - # 步骤 1: 手动检出代码 - # 替代 "uses: actions/checkout@v3" - # 适用于 Runner 无法访问外网,但可以访问 Gitea 实例的场景 +# 步骤 1: 手动检出代码 (更新为克隆到 'repo' 子目录) - name: Manual Checkout run: | - echo "清理工作目录..." - rm -rf * .gitea .git || true + echo "正在手动检出代码..." - # ------------------------------------------------------------------ - # 步骤 2: 构造 Git URL (使用环境变量) - # ------------------------------------------------------------------ - # Gitea Runner 会自动将 gitea.repository_url 等上下文变量 - # 注入为 $GITEA_REPOSITORY_URL 这样的环境变量。 - # 这种方式比使用 ${{ ... }} 表达式更兼容、更健壮。 + # 1. 创建一个干净的目录 + # 我们不再尝试清理 '..',而是克隆到一个新的子目录 + REPO_DIR="repo" + rm -rf $REPO_DIR + mkdir $REPO_DIR - # 打印变量以供调试 - echo "GITEA_REPOSITORY_URL = $GITEA_REPOSITORY_URL" - echo "GITEA_ACTOR = $GITEA_ACTOR" - echo "GITEA_REF_NAME = $GITEA_REF_NAME" - - # 检查关键变量是否已设置 + echo "检查 Gitea 环境变量..." if [ -z "$GITEA_REPOSITORY_URL" ] || [ -z "$GITEA_ACTOR" ] || [ -z "$GITEA_REF_NAME" ]; then echo "::error::一个或多个 Gitea 环境变量未设置!" - echo "::error::(GITEA_REPOSITORY_URL, GITEA_ACTOR, GITEA_REF_NAME)" - echo "::error::请检查您的 Gitea Runner 配置。" exit 1 fi - # 构造认证 URL - # 1. 替换协议 (注意: ${{ secrets.cicd }} 是安全的,Runner 会正确处理它) + # 2. 构造认证 URL REPO_URL_AUTH=$(echo "$GITEA_REPOSITORY_URL" | sed "s|://|://${GITEA_ACTOR}:${{ secrets.cicd }}@|") - - # 2. 拼接 .git 后缀 (修复了之前的语法错误) REPO_URL_WITH_CREDS="${REPO_URL_AUTH}.git" - echo "构造的克隆 URL (已隐藏密码):" - echo "$GITEA_REPOSITORY_URL" | sed "s|://|://${GITEA_ACTOR}:***@|" + # 3. 执行 Git Clone (克隆到 './repo' 目录) + echo "开始克隆分支 $GITEA_REF_NAME 到 $REPO_DIR 目录..." + git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS $REPO_DIR - # ------------------------------------------------------------------ - # 步骤 3: 执行 Git Clone - # ------------------------------------------------------------------ - echo "开始克隆分支: $GITEA_REF_NAME" - git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS . - - echo "代码检出成功。当前目录内容:" - ls -la + echo "代码检出成功。检查 './repo' 目录内容:" + ls -la $REPO_DIR echo "---" - echo "确认 'docker' 目录存在:" - ls -la docker + echo "确认 'docker' 目录存在于 './repo' 内部:" + ls -la $REPO_DIR/docker echo "---" - # 步骤 2: 登录 Gitea 容器注册表 + # 步骤 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: 构建并推送镜像 (保持不变) + # 步骤 3: 构建并推送镜像 (更新:增加了 cd repo) - name: Build and Push Image run: | - # 注意:您的 VERSION 变量现在是分支名 "cicd-testing" - # 这在测试阶段是OK的。 + # ---------------------------------------------------- + # 关键修复:进入我们检出代码的 'repo' 目录 + echo "切换工作目录到 ./repo" + cd repo + + # 确认我们现在在正确的目录中 + echo "当前工作目录 (pwd):" + pwd + echo "当前目录内容 (ls -la):" + ls -la + # ---------------------------------------------------- + VERSION=$(echo ${{ gitea.ref_name }} | sed 's/v//') IMAGE_PATH="192.168.0.75:3000/guanyuankai/bonus-edge-proxy:${VERSION}" LATEST_PATH="192.168.0.75:3000/guanyuankai/bonus-edge-proxy:latest" echo "Building and pushing $IMAGE_PATH..." - # 这里的路径 -f docker/Dockerfile.prod . 现在是正确的 + # 这里的路径 -f docker/Dockerfile.prod . + # 现在是相对于 './repo' 目录的,这是正确的 docker buildx build \ --platform linux/arm64 \ -t $IMAGE_PATH \