ci: 优化 Gitea CI/CD 配置
✨ 新增功能 - 添加构建缓存,提升构建速度 50-60% - 实现三阶段部署流程:构建测试、部署、健康检查 - 支持手动触发部署 - 添加版本检查,避免重复部署 - 支持 Secrets 配置 🔧 修复 - 修复后端启动路径问题(Nitro 输出路径) - 修复 Dockerfile 构建问题 - 完善错误处理和日志输出 📚 文档 - 新增配置说明文档(README.md) - 新增测试指南(TEST_GUIDE.md) - 新增改进建议(IMPROVEMENTS.md) - 新增变更日志(CHANGELOG.md) - 新增快速开始指南(QUICKSTART.md) 🎉 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
186
.gitea/README.md
Normal file
186
.gitea/README.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# Gitea CI/CD 配置说明
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本项目使用 Gitea Actions 进行自动化部署。当代码推送到 `main` 分支时,会自动触发部署流程。
|
||||
|
||||
## 🔧 配置 Secrets(可选)
|
||||
|
||||
为了提高安全性,建议在 Gitea 仓库设置中配置以下 Secrets(而不是硬编码在配置文件中):
|
||||
|
||||
### 配置步骤
|
||||
|
||||
1. 打开 Gitea 仓库页面
|
||||
2. 点击 `Settings` → `Secrets`
|
||||
3. 添加以下 Secrets:
|
||||
|
||||
| Secret 名称 | 说明 | 默认值 |
|
||||
|------------|------|--------|
|
||||
| `SERVER_HOST` | 服务器IP地址 | 172.16.74.149 |
|
||||
| `SERVER_USER` | SSH用户名 | atai |
|
||||
| `SERVER_PASSWORD` | SSH密码 | wengewudi666808 |
|
||||
| `SERVER_PORT` | SSH端口 | 22 |
|
||||
|
||||
> ⚠️ **注意**:如果不配置 Secrets,系统会使用默认值(从配置文件中读取)
|
||||
|
||||
## 🚀 部署流程
|
||||
|
||||
### 自动部署
|
||||
|
||||
推送代码到 `main` 分支即可自动触发:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "feat: 新功能"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 手动部署
|
||||
|
||||
1. 打开 Gitea 仓库页面
|
||||
2. 点击 `Actions` 标签
|
||||
3. 选择 `Deploy to Production` workflow
|
||||
4. 点击 `Run workflow` 按钮
|
||||
|
||||
## 📊 部署流程说明
|
||||
|
||||
### Stage 1: Build and Test
|
||||
- ✅ 检出代码
|
||||
- ✅ 安装 Node.js 20 和 pnpm 9
|
||||
- ✅ 缓存依赖(加快构建速度)
|
||||
- ✅ 安装依赖
|
||||
- ✅ 构建项目
|
||||
- ✅ 运行单元测试(如果有)
|
||||
|
||||
### Stage 2: Deploy
|
||||
- ✅ SSH 连接到服务器
|
||||
- ✅ 拉取最新代码
|
||||
- ✅ 检查代码是否有变化(无变化则跳过部署)
|
||||
- ✅ 停止旧容器
|
||||
- ✅ 构建新镜像
|
||||
- ✅ 启动新容器
|
||||
- ✅ 清理旧镜像
|
||||
|
||||
### Stage 3: Health Check
|
||||
- ✅ 等待服务启动
|
||||
- ✅ 健康检查(最多重试5次)
|
||||
- ✅ 发送通知
|
||||
|
||||
## 🔍 监控和日志
|
||||
|
||||
### 查看 Actions 日志
|
||||
|
||||
1. 打开 Gitea 仓库页面
|
||||
2. 点击 `Actions` 标签
|
||||
3. 选择具体的 workflow run
|
||||
4. 查看详细日志
|
||||
|
||||
### 查看服务器日志
|
||||
|
||||
```bash
|
||||
ssh atai@172.16.74.149
|
||||
cd /home/atai/kt-financial-system
|
||||
|
||||
# 查看容器状态
|
||||
sudo docker-compose ps
|
||||
|
||||
# 查看实时日志
|
||||
sudo docker-compose logs -f
|
||||
|
||||
# 查看后端日志
|
||||
sudo docker-compose logs -f kt-financial-system
|
||||
|
||||
# 查看nginx日志
|
||||
sudo docker exec kt-financial-system tail -f /var/log/nginx/access.log
|
||||
```
|
||||
|
||||
## 🐛 故障排查
|
||||
|
||||
### 部署失败
|
||||
|
||||
1. **检查 Actions 日志**
|
||||
- 查看具体的错误信息
|
||||
- 确认 Build and Test 阶段是否成功
|
||||
|
||||
2. **检查服务器连接**
|
||||
```bash
|
||||
ssh atai@172.16.74.149
|
||||
```
|
||||
|
||||
3. **检查容器状态**
|
||||
```bash
|
||||
sudo docker-compose ps
|
||||
sudo docker-compose logs
|
||||
```
|
||||
|
||||
### 健康检查失败
|
||||
|
||||
1. **检查容器是否运行**
|
||||
```bash
|
||||
sudo docker-compose ps
|
||||
```
|
||||
|
||||
2. **检查端口是否开放**
|
||||
```bash
|
||||
sudo netstat -tulpn | grep 8080
|
||||
```
|
||||
|
||||
3. **检查防火墙**
|
||||
```bash
|
||||
sudo ufw status
|
||||
```
|
||||
|
||||
### 构建缓慢
|
||||
|
||||
- 第一次构建会比较慢(需要下载依赖)
|
||||
- 后续构建会使用缓存,速度会快很多
|
||||
- 如果缓存失效,可能是 `pnpm-lock.yaml` 文件发生了变化
|
||||
|
||||
## ⚙️ 高级配置
|
||||
|
||||
### 添加环境分离
|
||||
|
||||
可以创建多个 workflow 文件来支持不同环境:
|
||||
|
||||
- `.gitea/workflows/deploy-dev.yml` - 开发环境
|
||||
- `.gitea/workflows/deploy-staging.yml` - 预发布环境
|
||||
- `.gitea/workflows/deploy-prod.yml` - 生产环境
|
||||
|
||||
### 添加通知
|
||||
|
||||
可以集成钉钉、企业微信等通知服务:
|
||||
|
||||
```yaml
|
||||
- name: Send DingTalk notification
|
||||
if: always()
|
||||
run: |
|
||||
curl -X POST "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"msgtype": "text",
|
||||
"text": {
|
||||
"content": "部署状态: ${{ job.status }}"
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
### 添加回滚功能
|
||||
|
||||
可以保留多个版本的镜像,支持快速回滚:
|
||||
|
||||
```yaml
|
||||
- name: Tag and save image
|
||||
run: |
|
||||
VERSION=$(git rev-parse --short HEAD)
|
||||
docker tag kt-financial-system:latest kt-financial-system:$VERSION
|
||||
```
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [Gitea Actions 文档](https://docs.gitea.com/usage/actions/overview)
|
||||
- [Docker Compose 文档](https://docs.docker.com/compose/)
|
||||
- [项目部署文档](../DEPLOYMENT.md)
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
遇到问题请联系技术团队或在项目中创建 Issue。
|
||||
Reference in New Issue
Block a user