# GitHub Actions 自动部署配置指南

## 🔐 配置 GitHub Secrets

### 1. 获取私钥内容

```bash
cat /root/.ssh/github_actions
```

复制输出的**全部内容**（包括 BEGIN 和 END 行）

### 2. 在 GitHub 仓库添加 Secrets

进入你的 GitHub 仓库 → **Settings** → **Secrets and variables** → **Actions** → **New repository secret**

添加以下 3 个 Secrets：

| Secret 名称 | 值 | 说明 |
|------------|-----|------|
| `SSH_PRIVATE_KEY` | (步骤 1 复制的私钥内容) | SSH 私钥，用于连接服务器 |
| `SERVER_HOST` | `43.167.232.189` | 服务器公网 IP |
| `SERVER_USER` | `root` | SSH 登录用户名 |

### 3. 验证配置

推送代码到 main/master 分支，触发自动部署：

```bash
cd /root/file_tag_manager
git add .
git commit -m "test: 测试自动部署"
git push origin main
```

---

## 📋 工作流程说明

### 触发条件

- ✅ Push 到 `main` 或 `master` 分支
- ✅ 手动触发（Actions 面板 → Run workflow）
- ❌ Pull Request（仅构建测试，不部署）

### 执行步骤

1. **构建测试**
   - 编译后端 Java 代码
   - 构建前端 Vue 应用
   - 验证 Docker 镜像构建成功

2. **部署到服务器**
   - SSH 连接服务器
   - 拉取最新代码
   - 停止旧服务
   - 重新构建镜像
   - 启动新服务
   - 清理旧镜像

3. **验证部署**
   - 检查容器状态
   - 测试 API 响应

---

## 🔧 手动部署

如果自动部署失败，可以手动执行：

```bash
cd /root/file_tag_manager
./deploy.sh
```

---

## 📊 查看部署日志

### GitHub Actions 日志

1. 进入 GitHub 仓库
2. 点击 **Actions** 标签
3. 选择对应的工作流
4. 查看详细日志

### 服务器部署日志

```bash
# 查看最近部署日志
cat /tmp/deploy.log

# 查看 Docker 容器日志
docker compose logs -f backend
docker compose logs -f frontend
```

---

## ⚠️ 常见问题

### 1. SSH 连接失败

**检查项：**
- 确认服务器防火墙允许 SSH（22 端口）
- 确认公钥已添加到 `~/.ssh/authorized_keys`
- 确认 GitHub Secrets 配置正确

**测试连接：**
```bash
ssh -i /root/.ssh/github_actions root@43.167.232.189
```

### 2. Docker 构建失败

**可能原因：**
- 服务器磁盘空间不足
- 网络连接问题

**解决方案：**
```bash
# 清理磁盘空间
docker system prune -a

# 检查磁盘使用
df -h
```

### 3. 服务启动失败

**检查日志：**
```bash
docker compose logs backend
docker compose logs frontend
```

**重启服务：**
```bash
docker compose down
docker compose up -d
```

---

## 🎯 高级配置

### 1. 部署到特定分支

修改 `.github/workflows/ci-cd.yml`：

```yaml
on:
  push:
    branches: [ main, develop, production ]
```

### 2. 添加部署通知

在 workflow 中添加钉钉/企业微信通知：

```yaml
- name: Notify WeCom
  run: |
    curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" \
      -H "Content-Type: application/json" \
      -d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"🚀 部署完成\\n\\n仓库：${{ github.repository }}\\n分支：${{ github.ref_name }}\\n提交：${{ github.sha }}\"}}"
```

### 3. 回滚部署

```bash
# 回滚到上一个版本
cd /root/file_tag_manager
git reset --hard HEAD~1
./deploy.sh
```

---

## 📈 监控建议

### 1. 健康检查

创建健康检查端点：

```bash
curl http://localhost:1001/actuator/health
```

### 2. 日志聚合

使用 Docker 日志驱动：

```yaml
# docker-compose.yml
services:
  backend:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
```

### 3. 监控告警

配置服务器监控（Prometheus + Grafana）或云服务监控。

---

**配置完成后，每次 Push 代码都会自动部署！** 🎉
