# 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。