SmartParks/.gitea/workflows/master.yml
bichangxiong 1d8b948a13
All checks were successful
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Successful in 6m21s
更新 .gitea/workflows/master.yml
2025-08-22 20:27:29 +08:00

94 lines
3.3 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 to Target Registry
# 监听master分支的推送事件
on:
push:
branches: [ master ]
jobs:
build-and-deploy:
name: 构建并推送镜像到目标仓库
runs-on: ubuntu
timeout-minutes: 30
steps:
- name: 拉取代码
uses: http://git.missmoc.top/mocheng/checkout@v4
with:
fetch-depth: 0
- name: 使用Maven构建项目
run: |
echo "===== 开始Maven构建 ====="
/maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests
echo "===== Maven构建完成 ====="
- name: 构建并推送Docker镜像
env:
# 替换为你的Docker Registry地址例如localhost:5000 或 192.168.1.100:5000
TARGET_REGISTRY: 127.0.0.1:5000
# 目标仓库中的项目名称
TARGET_PROJECT: smartparks
run: |
echo "===== 环境信息 ====="
echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT"
# 【删除登录步骤】因为仓库无认证,无需登录
echo "===== 查找项目中的Dockerfile ====="
dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*")
if [ -z "$dockerfiles" ]; then
echo "警告未找到任何Dockerfile"
exit 0
fi
# 处理每个Dockerfile后续构建、推送逻辑与之前类似保持不变
echo "$dockerfiles" | while read -r dockerfile; do
echo "===== 处理Dockerfile: $dockerfile ====="
docker_context=$(dirname "$dockerfile")
image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]//g')
full_image_name="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-${{ github.sha }}"
echo "镜像名称: $full_image_name"
# 检查JAR包是否存在
echo "===== 检查JAR包 ====="
jar_files=$(find "$docker_context" -name "*.jar" -type f)
if [ -z "$jar_files" ]; then
echo "警告:在 $docker_context 目录中未找到JAR包"
continue
fi
echo "找到JAR包"
echo "$jar_files"
echo "===== 构建镜像 ====="
if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then
echo "错误:构建镜像失败"
exit 1
fi
echo "===== 推送镜像到仓库 ====="
if ! docker push "$full_image_name"; then
echo "错误:推送镜像失败,请检查仓库是否可访问"
exit 1
fi
# 推送latest标签逻辑保持不变
latest_image="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-latest"
echo "===== 推送最新标签: $latest_image ====="
docker tag "$full_image_name" "$latest_image"
if ! docker push "$latest_image"; then
echo "错误推送latest标签失败"
exit 1
fi
done
echo "===== 清理操作 ====="
docker system prune -f
echo "===== 所有操作完成 ===="
- name: 重启服务
run: |
kubectl rollout restart deployment sis -n smartparks
kubectl rollout restart deployment property -n smartparks