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

95 lines
3.2 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:
create:
tags:
- 'v*.*.*'
jobs:
build-and-push:
runs-on: arm-builder
steps:
# 步骤 1: 手动检出代码 (使用 $GITEA_REF)
- name: Manual Checkout
run: |
set -e
echo "正在手动检出代码... (生产 Tag 模式 v2)"
REPO_DIR="repo"
rm -rf $REPO_DIR
mkdir $REPO_DIR
HARDCODED_REPO_URL="http://192.168.0.75:3000/guanyuankai/bonus-edge-proxy"
# ----------------- (关键变更) -----------------
# 1. 改为检查更底层的 $GITEA_REF
echo "检查 Gitea 环境变量 (GITEA_REF)..."
if [ -z "$GITEA_REF" ]; then
echo "::error::GITEA_REF 环境变量未设置!"
echo "::error::此工作流应由一个 Tag 触发。"
exit 1
fi
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_WITH_CREDS="${REPO_URL_AUTH}.git"
# 3. 使用提取的 $TAG_NAME 检出代码
echo "开始克隆 Tag: $TAG_NAME 到 $REPO_DIR 目录..."
git clone --quiet --branch $TAG_NAME $REPO_URL_WITH_CREDS $REPO_DIR
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: 构建并推送镜像 (使用 $TAG_NAME)
- name: Build and Push Image
run: |
set -e
cd repo
# 4. (关键) 我们需要重新定义 $TAG_NAME因为 'run:' 步骤不共享 Shell 变量
# (或者,我们可以再次执行提取操作)
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
echo "::error::无法从 TAG_NAME ($TAG_NAME) 提取版本号"
exit 1
fi
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..."
echo "Also pushing $LATEST_PATH..."
docker buildx build \
--platform linux/arm64 \
--load \
-t $IMAGE_PATH \
-t $LATEST_PATH \
-f docker/Dockerfile.prod . \
--push