feat:增加cicd
This commit is contained in:
@@ -86,7 +86,7 @@ go run .
|
||||
验证健康检查:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8080/ping
|
||||
curl http://localhost:8081/ping
|
||||
# {"message":"pong"}
|
||||
```
|
||||
|
||||
@@ -231,6 +231,38 @@ curl http://localhost:8080/ping
|
||||
- 登录接口对「账号不存在」与「密码错误」返回同一错误码,避免账号枚举攻击。
|
||||
- 生产环境请将 `Server.RunMode` 设为 `release`,并通过反向代理对外提供 HTTPS。
|
||||
|
||||
## CI/CD 与部署
|
||||
|
||||
### 流水线(Gitea Actions)
|
||||
|
||||
`.gitea/workflows/deploy.yaml` 提供「构建并部署」流水线:
|
||||
|
||||
| 触发方式 | 说明 |
|
||||
| --- | --- |
|
||||
| 推送 `v*` 标签 | 如 `git tag v1.0.0 && git push origin v1.0.0` |
|
||||
| 手动触发 | Gitea 仓库页面 Actions 标签页 → 选择「构建并部署」→ Run workflow |
|
||||
|
||||
流程:拉取代码 → 构建镜像(多阶段 Dockerfile,静态编译)→ 推送 `git.lzcwy.cn/zhengchiliu/zt-closet-manage-backend`(tag + latest)→ SSH 部署生产机 → `/ping` 健康检查;**检查失败自动输出日志并回滚到旧镜像**。
|
||||
|
||||
> 管理后台无数据库迁移命令(`admin_users` 表由服务启动时 GORM AutoMigrate 幂等创建),因此没有业务服务那样的迁移流水线。
|
||||
|
||||
### Gitea 仓库 Secrets / Variables(需自行创建)
|
||||
|
||||
| 类型 | 名称 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| Secret | `ZT_CLOSET_MANAGE_REGISTRY_USER` | Gitea 镜像仓库登录用户名 |
|
||||
| Secret | `ZT_CLOSET_MANAGE_REGISTRY_TOKEN` | Gitea 镜像仓库登录令牌 |
|
||||
| Secret | `ZT_CLOSET_MANAGE_PROD_SSH_KEY` | 生产机部署 SSH 私钥 |
|
||||
| Variable | `ZT_CLOSET_MANAGE_PROD_SSH_HOST` | 生产机 IP/域名 |
|
||||
| Variable | `ZT_CLOSET_MANAGE_PROD_SSH_USER` | 生产机 SSH 用户 |
|
||||
|
||||
### 生产机准备
|
||||
|
||||
- 部署目录:`/opt/zt-closet-manage`(流水线会自动创建 `configs/` 与 `storage/logs/`)。
|
||||
- 手动准备 `configs/config.yaml`(见上文配置说明);其 `Server.HttpPort` 必须为 `8081`(与流水线健康检查端口一致)。
|
||||
- 容器以非 root 用户(uid 10001)运行,日志目录权限由流水线自动设置。
|
||||
- 本地构建验证:`docker build --build-arg GOPROXY=https://goproxy.cn,direct -f scripts/dockerfile/Dockerfile -t zt-closet-manage-backend:test .`
|
||||
|
||||
## 部署提示
|
||||
|
||||
- **工作目录**:启动时必须位于项目根目录(配置路径固定为 `configs/config.yaml`)。
|
||||
|
||||
Reference in New Issue
Block a user