diff --git a/.gitea/workflows/build-push.yml b/.gitea/workflows/build-push.yml new file mode 100644 index 0000000..2a02206 --- /dev/null +++ b/.gitea/workflows/build-push.yml @@ -0,0 +1,78 @@ +name: Build and Push Edge Proxy Image + +on: + create: + tags: + - 'v*.*.*' # 1. 触发器已改回 Tag 模式 + +jobs: + build-and-push: + runs-on: arm64 + + steps: + # 步骤 1: 手动检出代码 (使用硬编码变量) + - name: Manual Checkout + run: | + set -e # 任何命令失败立即退出 + + echo "正在手动检出代码... (使用硬编码路径)" + + REPO_DIR="repo" + rm -rf $REPO_DIR + mkdir $REPO_DIR + + # --- 变量硬编码 --- + # 您的 Runner 未提供 $GITEA_REPOSITORY_URL 和 $GITEA_REF_NAME + # 我们在此处手动定义它们 + HARDCODED_REPO_URL="http://192.168.0.75:3000/guanyuankai/bonus-edge-proxy" + HARDCODED_BRANCH="cicd-testing" + # -------------------- + + # 构造认证 URL + # 我们仍然假设 ${{ gitea.actor }} 和 ${{ secrets.cicd }} 会被 Runner 正确注入 + REPO_URL_AUTH=$(echo "$HARDCODED_REPO_URL" | sed "s|://|://${{ gitea.actor }}:${{ secrets.cicd }}@|") + REPO_URL_WITH_CREDS="${REPO_URL_AUTH}.git" + + echo "开始克隆分支 $HARDCODED_BRANCH 到 $REPO_DIR 目录..." + git clone --quiet --branch $HARDCODED_BRANCH $REPO_URL_WITH_CREDS $REPO_DIR + + echo "代码检出成功。检查 './repo' 目录内容:" + ls -la $REPO_DIR + echo "---" + echo "确认 'docker' 目录存在于 './repo' 内部:" + ls -la $REPO_DIR/docker + 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: 构建并推送镜像 (使用硬编码版本) + - name: Build and Push Image + run: | + set -e # 任何命令失败立即退出 + + echo "切换工作目录到 ./repo" + cd repo + + echo "已成功切换目录。当前工作目录 (pwd):" + pwd + + # --- 变量硬编码 --- + # 您的 Runner 未提供 $GITEA_REF_NAME,因此我们也必须硬编码版本 + VERSION="cicd-testing" + # -------------------- + + 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..." + + docker buildx build \ + --platform linux/arm64 \ + --load \ + -t $IMAGE_PATH \ + -t $LATEST_PATH \ + -f docker/Dockerfile.prod . \ + --push \ No newline at end of file