bonus-edge-proxy/.gitea/workflows/build-push.yml

86 lines
3.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 实例的场景
- name: Manual Checkout
run: |
echo "清理工作目录..."
rm -rf * .gitea .git || true
# ------------------------------------------------------------------
# 步骤 2: 构造 Git URL (使用环境变量)
# ------------------------------------------------------------------
# Gitea Runner 会自动将 gitea.repository_url 等上下文变量
# 注入为 $GITEA_REPOSITORY_URL 这样的环境变量。
# 这种方式比使用 ${{ ... }} 表达式更兼容、更健壮。
# 打印变量以供调试
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
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 会正确处理它)
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
# ------------------------------------------------------------------
echo "开始克隆分支: $GITEA_REF_NAME"
git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS .
echo "代码检出成功。当前目录内容:"
ls -la
echo "---"
echo "确认 'docker' 目录存在:"
ls -la 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: |
# 注意:您的 VERSION 变量现在是分支名 "cicd-testing"
# 这在测试阶段是OK的。
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 . 现在是正确的
docker buildx build \
--platform linux/arm64 \
-t $IMAGE_PATH \
-t $LATEST_PATH \
-f docker/Dockerfile.prod . \
--push