# Hugo 自动化部署进阶


在 Homelab 环境下使用 Hugo (0.153.0+) 配合 PaperMod 主题创作时，频繁的 Git 推送和 Cloudflare Pages 堆积如山的部署记录总是让人头疼。本文分享一个实战脚本，让你通过一个 `hugo-deploy` 命令，完成从代码提交到后台清理的全过程。

## 1. 核心流程图

本项目实现了从本地源码到云端生产环境的自动化闭环管理：

1. **本地端**：一键完成 `add`、`commit`、`push`。
2. **GitHub**：作为源码仓库并触发 Cloudflare 的 Webhook。
3. **Cloudflare**：自动拉取并构建部署，同时接收脚本的 API 指令清理冗余历史。

## 2. 环境要求

- **系统**: Debian 13 (理论兼容所有主流 Linux)
- **依赖**: `git`, `curl`, `jq` (执行 `sudo apt install jq` 安装)
- **Hugo 版本**: 0.153.0+
- **部署平台**: Cloudflare Pages

## 3. 准备工作：获取 API 密钥

| 密钥名称 | 获取位置 | 建议权限 |
| :--- | :--- | :--- |
| **GitHub Token** | Settings > Developer settings | Fine-grained: `Contents (Read & Write)` |
| **CF Account ID** | Pages 项目控制台 URL 中 | 32 位十六进制字符串 |
| **CF API Token** | My Profile > API Tokens | 自定义：`Cloudflare Pages 编辑` |

> **注意**：创建 Cloudflare Token 时，必须包含 **Cloudflare Pages Edit** 权限，否则脚本无法执行后续的删除（DELETE）操作。

## 4. 自动化脚本下载与安装

为了保持系统整洁，我们建议将自动化脚本放置在 `/usr/local/bin/` 目录下。

1. **下载脚本**: 下载并解压 [hugo-deploy.zip](hugo-deploy.zip)

```bash
sudo apt update && sudo apt install -y zip
unzip hugo-deploy.zip
```

1. **移动并重命名**:

```bash
sudo mv hugo-deploy.sh /usr/local/bin/hugo-deploy
```

1. **配置参数**: 使用 vi 或 nano 修改脚本内的 GIT_TOKEN、CF_API_TOKEN 等关键个人配置。

2. **赋予执行权限:**

```bash
sudo chmod +x /usr/local/bin/hugo-deploy
```

## 5. 安全与生效设置

**修正换行符**: 如果你在 Windows 下编辑过脚本，请执行以下命令：

```bash
sudo sed -i 's/\r$//' /usr/local/bin/hugo-deploy
```

**从此，只需输入 `hugo-deploy`，即可享受极简主义的发布流程！**


---

> 作者: [Yan.X](https://g9g.top)  
> URL: https://g9g.top/posts/hugo-deploy/  

