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