001project_wildgrowth/.gitea/workflows/README.md

145 lines
4.3 KiB
Markdown
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 部署配置说明
## 文件说明
- `online-deploy.yml` - 生产环境部署 workflowmain 分支和 tag
- `develop-deploy.yml` - 开发环境部署 workflowdevelop 分支)
## 配置步骤
### 1. 准备 SSH 密钥
在服务器上生成 SSH 密钥对(如果还没有):
```bash
ssh-keygen -t rsa -b 4096 -C "gitea-actions-deploy" -f ~/.ssh/gitea_deploy_key
```
将公钥添加到服务器的 `~/.ssh/authorized_keys`
```bash
cat ~/.ssh/gitea_deploy_key.pub >> ~/.ssh/authorized_keys
```
### 2. 在 Gitea 中配置 Secrets
1. 进入仓库设置 → Secrets
2. 添加以下 Secret
- **名称**: `SSH_PRIVATE_KEY`
- **值**: 服务器上 `~/.ssh/gitea_deploy_key` 的**私钥内容**(整个文件内容,包括 `-----BEGIN``-----END` 行)
### 3. 确保服务器环境
确保服务器上已安装:
- Node.js 和 npm
- PM2
- Git
- Prisma CLI通过 npm 全局安装或使用 npx
### 4. 触发部署
#### 生产环境部署online-deploy.yml
**自动触发:**
- 推送到 `main` 分支
- 推送标签(格式:`v*`,如 `v1.0.0`
**手动触发:**
1. 进入仓库的 Actions 页面
2. 选择 "生产环境部署" workflow
3. 点击 "Run workflow"
4. 选择要部署的分支或标签
5. 点击 "Run workflow" 开始部署
#### 开发环境部署develop-deploy.yml
**自动触发:**
- 推送到 `develop` 分支
**手动触发:**
1. 进入仓库的 Actions 页面
2. 选择 "开发环境部署" workflow
3. 点击 "Run workflow"
4. 选择要部署的分支(默认 develop
5. 点击 "Run workflow" 开始部署
## Workflow 执行流程
1. ✅ 检出代码
2. ✅ 设置部署分支
3. ✅ 配置 SSH 连接
4. ✅ 测试 SSH 连接
5. ✅ 执行部署脚本(调用服务器上的 `deploy-from-github.sh`
- 拉取最新代码
- 安装依赖
- Prisma generate
- 数据库迁移
- 迁移 Prompt 配置(如果存在)
- 构建项目
- 重启 PM2 服务
- 健康检查
6. ✅ 清理 SSH 密钥
7. ✅ 部署完成通知
## 回滚
如果部署出现问题,可以通过 SSH 连接到服务器手动回滚:
```bash
ssh root@120.55.112.195
cd /var/www/wildgrowth-backend/backend
bash deploy/deploy-from-github.sh rollback
```
## 环境配置说明
### 生产环境online-deploy.yml
- **PM2 服务名**: `wildgrowth-api`
- **健康检查**: `http://localhost:3000/health`
- **部署路径**: `/var/www/wildgrowth-backend/backend`
### 开发环境develop-deploy.yml
- **PM2 服务名**: `wildgrowth-api-dev`(注意:如果开发环境使用不同的服务名,请修改 workflow
- **健康检查**: `http://localhost:3001/health`(注意:如果开发环境使用不同端口,请修改 workflow
- **部署路径**: `/var/www/wildgrowth-backend/backend`(注意:如果开发环境使用不同路径,请修改 workflow
> **提示**: 如果开发环境和生产环境使用相同的服务器但不同的目录或端口,请修改 `develop-deploy.yml` 中的 `APP_ROOT`、`PM2_APP_NAME` 和 `HEALTH_CHECK_URL` 环境变量。
## 注意事项
1. **SSH 密钥安全**: 确保私钥安全,不要提交到代码仓库
2. **服务器权限**: 确保 SSH 用户有足够的权限执行部署操作
3. **环境变量**: 确保服务器上的 `.env` 文件已正确配置
4. **健康检查**:
- 生产环境检查 `http://localhost:3000/health`
- 开发环境检查 `http://localhost:3001/health`(如果使用不同端口)
5. **PM2 服务名**:
- 生产环境使用 `wildgrowth-api`
- 开发环境使用 `wildgrowth-api-dev`(如果使用不同服务名)
## 故障排查
### SSH 连接失败
- 检查 SSH 私钥是否正确配置在 Gitea Secrets 中
- 检查服务器防火墙是否允许 SSH 连接
- 检查服务器的 `~/.ssh/authorized_keys` 是否包含公钥
### 部署失败
- 查看 Actions 日志中的详细错误信息
- SSH 到服务器检查:`pm2 logs wildgrowth-api`
- 检查服务器磁盘空间:`df -h`
- 检查 Node.js 版本:`node -v`
### 健康检查失败
- 检查服务是否正常启动:`pm2 status`
- 查看服务日志:
- 生产环境:`pm2 logs wildgrowth-api --lines 50`
- 开发环境:`pm2 logs wildgrowth-api-dev --lines 50`
- 检查端口是否被占用:
- 生产环境:`netstat -tlnp | grep 3000`
- 开发环境:`netstat -tlnp | grep 3001`