Some checks failed
Deploy to Runner / deploy (push) Failing after 6m7s
- 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.
128 lines
4.8 KiB
YAML
128 lines
4.8 KiB
YAML
# ============================================================
|
||
# 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.1(Docker 默认网桥);如果不对,设置 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
|