# 文档站自动部署配置指南

## 概述

本文档说明如何配置 Gitea Webhook + Jenkins 实现文档站自动部署。

当代码推送到 `main` 分支且修改了文档相关文件时，会自动触发构建和部署。

## 架构

```
Git Push (main) → Gitea Webhook → Jenkins Pipeline → Build MkDocs → rsync 到服务器
```

## 配置步骤

### 1. 初始化服务器目录

```bash
# 在本地执行
./scripts/setup-docs-server.sh
```

这会在服务器上创建 `/var/www/docs.xuqinmin.com/` 目录结构。

### 2. 配置 Nginx

将 `nginx-docs.conf` 复制到服务器并重启 nginx：

```bash
# 复制配置文件
scp nginx-docs.conf root@106.54.23.149:/etc/nginx/conf.d/docs.xuqinmin.com.conf

# 测试配置
ssh root@106.54.23.149 "nginx -t"

# 重启 nginx
ssh root@106.54.23.149 "systemctl reload nginx"
```

### 3. 配置 SSL 证书（如未配置）

```bash
# 在服务器上执行
acme.sh --issue -d docs.xuqinmin.com --dns dns_dp \
  --dp-id "你的DNSPOD_ID" \
  --dp-key "你的DNSPOD_KEY"

# 安装证书
acme.sh --install-cert -d docs.xuqinmin.com \
  --key-file /opt/xuqm/acme/docs.xuqinmin.com_ecc/docs.xuqinmin.com.key \
  --fullchain-file /opt/xuqm/acme/docs.xuqinmin.com_ecc/fullchain.cer \
  --reloadcmd "systemctl reload nginx"
```

### 4. 在 Jenkins 创建 Pipeline Job

1. 访问 https://jenkins.xuqinmin.com/
2. 新建任务 → Pipeline
3. 名称: `lawless-docs-deploy`
4. 配置:
   - **Pipeline 脚本**: 从 SCM 获取 Jenkinsfile
   - **SCM**: Git
   - **仓库 URL**: `ssh://git@xuqinmin.com:2222/xuqinmin12/lawless.git`
   - **Branch**: `main`
   - **Script Path**: `Jenkinsfile`

5. 保存

### 5. 添加 Jenkins 凭据

在 Jenkins → 凭据 → 系统 → 全局凭据中添加:

1. **Gitea SSH Key** (ID: `gitea-ssh-key`)
   - 类型: SSH Username with private key
   - Username: `git`
   - Private Key: 你的 SSH 私钥

2. **Docs Server Key** (ID: `docs-server-key`)
   - 类型: SSH Username with private key
   - Username: `root`
   - Private Key: 服务器 SSH 私钥

### 6. 配置 Gitea Webhook

1. 访问 https://xuqinmin.com/xuqinmin12/lawless
2. Settings → Webhooks → Add Webhook → Gitea
3. 配置:
   - **Target URL**: `https://jenkins.xuqinmin.com/generic-webhook-trigger/invoke?token=lawless-docs-deploy`
   - **HTTP Method**: POST
   - **Content Type**: `application/json`
   - **触发事件**: Push Events
   - **Branch Filter**: `main`

4. 添加并测试

## 手动部署

如果需要手动部署，可以使用以下命令:

```bash
# 构建文档
make docs-build

# 部署到本地
make docs-deploy

# 部署到远程服务器
make docs-deploy-remote
```

## 验证

1. 访问 https://docs.xuqinmin.com/
2. 检查文档是否是最新版本
3. 查看 Jenkins 构建日志

## 故障排查

### Webhook 未触发

1. 检查 Gitea Webhook 日志 (Recent Deliveries)
2. 确认 Jenkins URL 可访问
3. 确认 token 正确

### Jenkins 构建失败

1. 检查 Jenkins 控制台输出
2. 确认凭据配置正确
3. 确认服务器 SSH 可访问

### 部署后文档未更新

1. 检查服务器目录权限
2. 检查 nginx 配置
3. 清除浏览器缓存

## 相关文件

- `Jenkinsfile` - Jenkins Pipeline 配置
- `nginx-docs.conf` - Nginx 配置
- `scripts/deploy-docs-site.sh` - 部署脚本
- `scripts/setup-docs-server.sh` - 服务器初始化脚本
