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