✨ 新增功能 - 添加构建缓存,提升构建速度 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>
187 lines
4.1 KiB
Markdown
187 lines
4.1 KiB
Markdown
# 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。
|