Files
wangziqi 7426579863
Some checks failed
Deploy to Runner / deploy (push) Failing after 6m7s
chore(project): rebranded project as 恭学教育 (GongXue Education)
- Updated pom.xml project name, description, and URL to 恭学教育.
- Changed LICENSE copyright holder to 恭学教育 (GongXue Education).
- Rebranded README.md with new project title and tagline.
- Replaced @author 芋道源码 with @author 恭学教育 across all Java source files.
- Updated Swagger metadata with 恭学教育 API title and admin@gongxue.com.
- Added Gitea Actions CI pipeline for automated build and deployment.
2026-07-27 15:12:32 +08:00

128 lines
4.8 KiB
YAML
Raw Permalink 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.

# ============================================================
# Gitea Actions CI/CD — 自动迁移 → 构建 → 部署到 Runner 本机
#
# 前置条件:
# 1. Gitea Runner (act_runner) 已注册Runner 有 Docker 权限
# 2. Runner 服务器已执行首次初始化(仅一次):
# docker network create yudao-net
# docker compose -f script/docker/docker-compose.yml up -d postgres redis
# 3. Runner Docker 需配 registry-mirrors国内加速拉镜像
#
# 数据库连接:
# CI 容器通过宿主机 IP 连接持久化 PostgreSQL非临时 service
# 默认使用 172.17.0.1Docker 默认网桥);如果不对,设置 runner 环境变量 DOCKER_HOST_IP
# ============================================================
name: Deploy to Runner
on:
push:
branches: [main]
env:
TZ: Asia/Shanghai
# 宿主机 IP — CI 容器通过此 IP 访问宿主机的 PostgreSQL / Redis
# 默认 Docker bridge gateway可在 runner 配置中覆盖
DOCKER_HOST_IP: "172.17.0.1"
PGUSER: postgres
PGPASSWORD: postgres
PGDATABASE: ruoyi-vue-pro
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# ==================== 1. 环境准备 ====================
- name: 检出代码
uses: actions/checkout@v4
- name: 检测宿主机 IP
run: |
# 如果 runner 环境变量覆盖了 DOCKER_HOST_IP则使用覆盖值
if [ -n "${DOCKER_HOST_IP_OVERRIDE}" ]; then
DOCKER_HOST_IP="${DOCKER_HOST_IP_OVERRIDE}"
fi
echo "📡 宿主机 IP: ${DOCKER_HOST_IP}"
echo "DOCKER_HOST_IP=${DOCKER_HOST_IP}" >> $GITHUB_ENV
- name: 安装 JDK 25
run: |
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 25.0.1-tem
sdk use java 25.0.1-tem
echo "JAVA_HOME=$HOME/.sdkman/candidates/java/current" >> $GITHUB_ENV
echo "$HOME/.sdkman/candidates/java/current/bin" >> $GITHUB_PATH
java -version
- name: 缓存 Maven 依赖
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# ==================== 2. 数据库迁移(连接宿主机持久化 PostgreSQL ====================
- name: 安装 PostgreSQL 客户端
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq postgresql-client
- name: 检查数据库连接
run: |
echo "🔌 尝试连接 PostgreSQL: ${DOCKER_HOST_IP}:5432"
if PGPASSWORD=${PGPASSWORD} psql -h ${DOCKER_HOST_IP} -U ${PGUSER} -d postgres -c "SELECT 1" > /dev/null 2>&1; then
echo "✅ PostgreSQL 连接正常"
else
echo "❌ 无法连接 PostgreSQL请确认持久化数据库已启动"
echo " 执行: docker compose -f script/docker/docker-compose.yml up -d postgres"
exit 1
fi
- name: 执行数据库迁移
run: |
echo "📦 创建数据库(如不存在)..."
PGPASSWORD=${PGPASSWORD} psql -h ${DOCKER_HOST_IP} -U ${PGUSER} -d postgres -tc \
"SELECT 1 FROM pg_database WHERE datname='${PGDATABASE}'" | grep -q 1 \
|| PGPASSWORD=${PGPASSWORD} createdb -h ${DOCKER_HOST_IP} -U ${PGUSER} ${PGDATABASE}
echo "📄 执行主表结构 (ruoyi-vue-pro.sql)..."
PGPASSWORD=${PGPASSWORD} psql -h ${DOCKER_HOST_IP} -U ${PGUSER} -d ${PGDATABASE} \
-f sql/postgresql/ruoyi-vue-pro.sql -v ON_ERROR_STOP=1
echo "📄 执行 Quartz 表结构 (quartz.sql)..."
PGPASSWORD=${PGPASSWORD} psql -h ${DOCKER_HOST_IP} -U ${PGUSER} -d ${PGDATABASE} \
-f sql/postgresql/quartz.sql -v ON_ERROR_STOP=1
echo "✅ 数据库迁移完成"
# ==================== 3. 编译打包 ====================
- name: Maven 打包
run: mvn -B clean package -DskipTests -pl yudao-server -am
- name: 确认 JAR 生成
run: |
ls -lh yudao-server/target/*.jar
echo "✅ JAR 就绪"
# ==================== 4. 构建镜像 + 重启服务 ====================
- name: 重新构建并启动服务
run: |
cd script/docker
docker compose up -d --build server
echo "✅ 服务已更新"
- name: 检查服务状态
run: |
echo ""
echo "==================== 容器状态 ===================="
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" \
--filter "name=yudao-server" \
--filter "name=yudao-postgres" \
--filter "name=yudao-redis"
echo ""
echo "📋 yudao-server 最近日志:"
docker logs --tail 30 yudao-server