72 lines
2.4 KiB
YAML
72 lines
2.4 KiB
YAML
name: Build and Push Edge Proxy Image
|
|
|
|
on:
|
|
create:
|
|
tags:
|
|
- 'v*.*.*' # 1. 触发器:在创建 Tag 时运行
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: arm-builder # 确保这仍然是您新 Runner 的标签
|
|
|
|
steps:
|
|
- name: Manual Checkout
|
|
run: |
|
|
set -e
|
|
|
|
echo "正在手动检出代码... (生产 Tag 模式)"
|
|
|
|
REPO_DIR="repo"
|
|
rm -rf $REPO_DIR
|
|
mkdir $REPO_DIR
|
|
|
|
HARDCODED_REPO_URL="http://192.168.0.75:3000/guanyuankai/bonus-edge-proxy"
|
|
|
|
# 2. (关键) 检查 $GITEA_REF_NAME (这应该是您的 Tag 名称, e.g., "v1.1.2")
|
|
echo "检查 Gitea 环境变量 (GITEA_REF_NAME)..."
|
|
if [ -z "$GITEA_REF_NAME" ]; then
|
|
echo "::error::GITEA_REF_NAME 环境变量未设置!"
|
|
echo "::error::此工作流应由一个 Tag 触发。"
|
|
exit 1
|
|
fi
|
|
echo "Tag 名称 (GITEA_REF_NAME) = $GITEA_REF_NAME"
|
|
|
|
REPO_URL_AUTH=$(echo "$HARDCODED_REPO_URL" | sed "s|://|://${{ gitea.actor }}:${{ secrets.cicd }}@|")
|
|
REPO_URL_WITH_CREDS="${REPO_URL_AUTH}.git"
|
|
|
|
# 3. (关键) 检出 $GITEA_REF_NAME (您的 Tag)
|
|
echo "开始克隆 Tag: $GITEA_REF_NAME 到 $REPO_DIR 目录..."
|
|
git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS $REPO_DIR
|
|
|
|
echo "代码检出成功。"
|
|
|
|
- name: Login to Gitea Container Registry
|
|
run: |
|
|
echo ${{ secrets.cicd }} | docker login http://192.168.0.75:3000 -u ${{ gitea.actor }} --password-stdin
|
|
|
|
- name: Build and Push Image
|
|
run: |
|
|
set -e
|
|
|
|
cd repo
|
|
|
|
# 4. (关键) 从 $GITEA_REF_NAME 动态生成版本号
|
|
VERSION=$(echo $GITEA_REF_NAME | sed 's/v//')
|
|
if [ -z "$VERSION" ]; then
|
|
echo "::error::无法从 GITEA_REF_NAME ($GITEA_REF_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 |