File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3535 script : |
3636 cd /home/ubuntu/involution-hell
3737
38- # 构建新镜像(失败则整个 workflow 标红)
38+ # 保存当前镜像为回滚备份(首次部署时镜像可能不存在,忽略错误)
39+ docker tag involutionhell-backend:latest involutionhell-backend:rollback 2>/dev/null || true
40+
41+ # 构建新镜像(失败则整个 workflow 标红,旧容器不受影响)
3942 docker build -t involutionhell-backend:latest .
4043
4144 # 用新镜像重启服务
4245 docker compose up -d --remove-orphans
46+
47+ # 等待服务启动,最多 60 秒
48+ echo "等待服务健康检查..."
49+ for i in $(seq 1 12); do
50+ if curl -fsS "http://127.0.0.1:8080/api/v1/actuator/health" | grep -q '"status":"UP"'; then
51+ echo "✅ 部署成功,服务正常运行"
52+ exit 0
53+ fi
54+ echo "第 $i 次检查未就绪,5 秒后重试..."
55+ sleep 5
56+ done
57+
58+ # 健康检查超时,用备份镜像回滚
59+ echo "❌ 健康检查失败,正在回滚到上一个版本..."
60+ docker tag involutionhell-backend:rollback involutionhell-backend:latest
61+ docker compose up -d --remove-orphans
62+ echo "回滚完成,workflow 标红以提示本次部署失败"
63+ exit 1
Original file line number Diff line number Diff line change @@ -122,6 +122,33 @@ curl -X POST http://127.0.0.1:8080/api/auth/login \
122122# 产物位于 target/backend
123123```
124124
125+ ## CI/CD 自动部署
126+
127+ 推送到 ` main ` 分支后,GitHub Actions 会自动触发部署流程:
128+
129+ ```
130+ push to main
131+ → SCP 同步源码到服务器
132+ → 服务器执行 docker build
133+ → docker compose up -d 重启服务
134+ ```
135+
136+ ** 生产环境健康检查端点:**
137+
138+ ```
139+ GET https://api.involutionhell.com/api/v1/actuator/health
140+ ```
141+
142+ 返回 ` {"status":"UP"} ` 表示服务正常运行。
143+
144+ > [ !IMPORTANT]
145+ > ** 关于部署失败与宕机风险:**
146+ >
147+ > - ** ` docker build ` 阶段失败** → 安全,旧容器不受影响,GitHub Actions 标红但服务继续运行。
148+ > - ** build 成功但新容器启动崩溃** (配置错误、数据库迁移异常等)→ 会短暂宕机。旧容器已被停止,新容器因 ` restart: always ` 持续重启但无法自愈,需人工介入。
149+ >
150+ > 合并前请确保本地执行 ` ./mvnw test ` 通过,并确认 ` .env ` 所需的环境变量在服务器上已正确配置。
151+
125152## 贡献规范
126153- 保持代码可编译,提交前执行 ` ./mvnw test ` 。
127154- 业务逻辑请放在 ` service ` 层,保持 ` controller ` 层简洁。
You can’t perform that action at this time.
0 commit comments