Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 5m7s
- 新增 9 张房屋相关数据表(社区/楼宇/房源/价格快照/交易/设施/社区设施/学区/偏好) - 添加菜单权限种子数据并绑定超级管理员角色 - 生成 DAO 层代码和实体对象 - 实现房屋模块 API 接口(社区/房源/看板)和控制器服务层 - 支持多平台软关联匹配、笋盘标记和低可信度标记功能 - 更新超级管理员账号为 xxcool/xxCool@2026 - 调整 RBAC 菜单结构,移除管理员管理功能,新增日志管理菜单 - 修复 RBAC 安全漏洞,确保禁用角色权限失效 - 重构认证模块,将登录相关接口迁移到统一包结构下 - 移除废弃的管理模块和工具类接口定义 - 为通用工具包添加中文注释和文档说明
79 lines
3.5 KiB
Go
79 lines
3.5 KiB
Go
# service.xpcool.com 自动部署:Gitea act_runner(push main/dev 触发)
|
||
# 注意点(与前端差异):
|
||
# 1. 后端不是拷贝静态文件,而是 Go 交叉编译 + Docker 镜像重建容器(runner 已挂载 docker.sock)。
|
||
# 2. job 基础镜像 node:20-bullseye 无 Go,需下载 Go 1.23 工具链(npmmirror 源,GOPROXY 走 goproxy.cn)。
|
||
# 3. 容器 env 通过 Gitea Actions secrets 注入(DB_DSN 必须带 mysql: 类型前缀,勿写死在仓库)。
|
||
# 4. 数据库结构变更请手动执行 manifest/sql/ 下脚本(003→004→004b→007),workflow 不做自动 DDL。
|
||
name: Build and Deploy (service.xpcool.com)
|
||
|
||
on:
|
||
push:
|
||
branches: [main, dev]
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
build-and-deploy:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Install git & download Go toolchain
|
||
run: |
|
||
set -e
|
||
apt-get update -qq
|
||
apt-get install -y -qq git >/dev/null
|
||
curl -fsSL https://npmmirror.com/mirrors/golang/go1.23.12.linux-amd64.tar.gz -o /tmp/go.tar.gz
|
||
mkdir -p /usr/local && tar -C /usr/local -xzf /tmp/go.tar.gz
|
||
export PATH="/usr/local/go/bin:$PATH"
|
||
echo "/usr/local/go/bin" >> "$GITHUB_ENV"
|
||
go version
|
||
|
||
- name: Checkout (local Gitea)
|
||
run: |
|
||
git clone --depth 1 --branch "${{ github.ref_name }}" https://oauth2:${{ github.token }}@git.xpcool.com/${{ github.repository }}.git .
|
||
git checkout ${{ github.sha }}
|
||
|
||
- name: Cross compile (linux/amd64, CGO disabled)
|
||
env:
|
||
GOPROXY: https://goproxy.cn,direct
|
||
GOFLAGS: -mod=mod
|
||
run: |
|
||
export PATH="/usr/local/go/bin:$PATH"
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/deploy/main main.go
|
||
ls -lh /tmp/deploy/main
|
||
|
||
- name: Assemble deploy dir (binary + config + resource + Dockerfile)
|
||
run: |
|
||
set -e
|
||
mkdir -p /tmp/deploy/manifest/config /tmp/deploy/resource
|
||
# 配置:基础 config.yaml + 环境化 config.prod.yaml(GF_GCFG_ENV=prod 时生效)
|
||
cp manifest/config/config.prod.yaml /tmp/deploy/manifest/config/config.prod.yaml
|
||
cp manifest/config/config.prod.yaml /tmp/deploy/manifest/config/config.yaml
|
||
# 静态资源(GoFrame public/template)
|
||
cp -r resource/public /tmp/deploy/resource/public
|
||
mkdir -p /tmp/deploy/resource/template
|
||
# 容器 Dockerfile(仓库内维护 deploy/Dockerfile,避免 workflow 内 heredoc 缩进问题)
|
||
cp deploy/Dockerfile /tmp/deploy/Dockerfile
|
||
echo "assemble done"
|
||
|
||
- name: Build image & restart container
|
||
env:
|
||
DB_DSN: ${{ secrets.DB_DSN }}
|
||
JWT_SECRET: ${{ secrets.JWT_SECRET }}
|
||
run: |
|
||
set -e
|
||
cd /tmp/deploy
|
||
docker build -t service.xpcool.com:latest .
|
||
docker rm -f service.xpcool.com >/dev/null 2>&1 || true
|
||
docker run -d --name service.xpcool.com \
|
||
--network xpcool-net \
|
||
-p 127.0.0.1:10100:10100 \
|
||
-e GF_GCFG_ENV=prod \
|
||
-e "DB_DSN=$DB_DSN" \
|
||
-e "JWT_SECRET=$JWT_SECRET" \
|
||
--restart unless-stopped \
|
||
service.xpcool.com:latest
|
||
# 冒烟:等待启动并验证 OpenAPI
|
||
sleep 5
|
||
curl -fsS -m 10 http://127.0.0.1:10100/api.json | head -c 120 || { echo "SMOKE TEST FAILED"; exit 1; }
|
||
echo
|
||
echo "Deployed service.xpcool.com (container restarted, 127.0.0.1:10100)"
|