|
Production deploy / build (push) Failing after 1s
Details
|
||
|---|---|---|
| .. | ||
| README.md | ||
| online-deploy.yml | ||
README.md
Gitea Actions 部署配置说明
文件说明
online-deploy.yml- 生产环境部署 workflow(main 分支和 tag)develop-deploy.yml- 开发环境部署 workflow(develop 分支)
配置步骤
1. 准备 SSH 密钥
在服务器上生成 SSH 密钥对(如果还没有):
ssh-keygen -t rsa -b 4096 -C "gitea-actions-deploy" -f ~/.ssh/gitea_deploy_key
将公钥添加到服务器的 ~/.ssh/authorized_keys:
cat ~/.ssh/gitea_deploy_key.pub >> ~/.ssh/authorized_keys
2. 在 Gitea 中配置 Secrets
-
进入仓库设置 → Secrets
-
添加以下 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)
手动触发:
- 进入仓库的 Actions 页面
- 选择 "生产环境部署" workflow
- 点击 "Run workflow"
- 选择要部署的分支或标签
- 点击 "Run workflow" 开始部署
开发环境部署(develop-deploy.yml)
自动触发:
- 推送到
develop分支
手动触发:
- 进入仓库的 Actions 页面
- 选择 "开发环境部署" workflow
- 点击 "Run workflow"
- 选择要部署的分支(默认 develop)
- 点击 "Run workflow" 开始部署
Workflow 执行流程
- ✅ 检出代码
- ✅ 设置部署分支
- ✅ 配置 SSH 连接
- ✅ 测试 SSH 连接
- ✅ 执行部署脚本(调用服务器上的
deploy-from-github.sh)- 拉取最新代码
- 安装依赖
- Prisma generate
- 数据库迁移
- 迁移 Prompt 配置(如果存在)
- 构建项目
- 重启 PM2 服务
- 健康检查
- ✅ 清理 SSH 密钥
- ✅ 部署完成通知
回滚
如果部署出现问题,可以通过 SSH 连接到服务器手动回滚:
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环境变量。
注意事项
- SSH 密钥安全: 确保私钥安全,不要提交到代码仓库
- 服务器权限: 确保 SSH 用户有足够的权限执行部署操作
- 环境变量: 确保服务器上的
.env文件已正确配置 - 健康检查:
- 生产环境检查
http://localhost:3000/health - 开发环境检查
http://localhost:3001/health(如果使用不同端口)
- 生产环境检查
- 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
- 生产环境: