静态站点生成器 Hugo 与 Cloudflare Pages 非常适配,但当你用 GitHub Actions 自动生成内容(比如数据文件)时,会遇到一个常见问题 —— Cloudflare Pages 跳过部署,显示「无可用部署」。
本文手把手教你如何解决这个问题,通过添加 部署钩子(Deploy Hook)让 Cloudflare 在 GitHub Actions 执行完后自动部署。
一问题场景
你使用 GitHub Actions 定时更新 Hugo 网站的数据(如每日热榜),然后推送到 GitHub 仓库。
但 Cloudflare Pages 显示:
「跳过部署」「无可用部署」
原因:
Cloudflare Pages 只会自动部署 main 分支的代码变更,而你在 GitHub Actions 中提交数据时添加了 [skip ci],Cloudflare 认为这次提交无需部署。
二解决方案总览
我们手动触发部署,让 Cloudflare 每次 Action 成功后强制部署。方法如下:
✅ 添加 Cloudflare Deploy Hook (部署挂钩)
三详细操作步骤
1. 在 Cloudflare Pages 添加「部署挂钩」
- 进入 Cloudflare Pages 项目控制台。
- 找到 “部署挂钩”(在中文界面中,直接搜索这个关键词)。
- 点击 “创建部署挂钩”。
- 输入名称,比如:
github-action-trigger。 - 生成后,复制 Webhook URL,格式如下:
https://api.cloudflare.com/client/v4/pages/webhooks/deploy/xxxxxxxxxxxxxxxxxxxx
2. 添加 GitHub Secrets
-
进入 GitHub 仓库设置 > Secrets and variables > Actions。
-
添加新 Secret:
- 名称:
CF_PAGES_DEPLOY_HOOK - 值:上一步复制的 Webhook URL
- 名称:
3. 修改 GitHub Actions 文件
name: Update Hot List
permissions:
contents: write
on:
schedule:
- cron: Ɔ */6 * * *' # 每6小时运行
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: Ƈ.22'
- name: Run Scraper
run: go run scripts/fetch_trending.go
- name: Commit & Push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/
git diff --cached --quiet || git commit -m "Update trending data [skip ci]"
git push
- name: Deploy to Cloudflare Pages via Webhook
run: curl -X POST "${{ secrets.CF_PAGES_DEPLOY_HOOK }}"
四构建配置 (Cloudflare Pages)
确保你的 Cloudflare Pages 构建配置正确:
- 构建命令:
hugo --minify - 输出目录:
public - 生产分支:
main - 构建系统版本:3
- 可选:启用缓存,提高构建速度。
五删除项目(如果过多部署)
-
Your project has too many deployments to be deleted, follow this guide to delete them: https://cfl.re/3CXesln
-
中文翻译:
“您的项目有太多部署记录需要删除,请遵循此指南来删除它们:https://cfl.re/3CXesln”
核心问题
简单来说,因为您的项目发布(部署)次数超过了100次,Cloudflare的网页界面无法一次性处理这么多删除操作,所以会失败。官方提供了一个命令行小工具来帮助您先清理掉这些旧的发布记录,然后您就可以在网页上正常删除项目了。
详细操作步骤
您需要在一台电脑上完成以下操作。这会用到“终端”或“命令行”工具,别担心,我会指导您。
第〇步:准备工作 (安装 Node.js)
这个小工具需要一个叫做 Node.js 的环境来运行。如果您的电脑上没有,请先安装。
- 访问 Node.js 官方网站: https://nodejs.org/
- 网站上会推荐一个 LTS (长期支持版),点击下载并安装它。安装过程一直点“下一步”即可。
第一步:下载并解压工具
- 点击这个链接下载官方提供的工具包:https://pub-505c82ba1c844ba788b97b1ed9415e75.r2.dev/delete-all-deployments.zip
- 下载完成后,找到这个
delete-all-deployments.zip文件,并 解压缩 它。你会得到一个名为delete-all-deployments的文件夹。
第二步:获取您的关键信息
在运行工具之前,您需要从Cloudflare网站上找到三样东西:
-
您的项目名称 (Project Name):
- 就是您想要删除的那个项目的名字。根据您的截图,这个名字是
yyszone。
- 就是您想要删除的那个项目的名字。根据您的截图,这个名字是
-
您的账户ID (Account ID):
- 登录 Cloudflare 仪表板。
- 在任何页面的右侧栏,您应该能看到您的账户ID。
- 或者,在主页网址
https://dash.cloudflare.com/后面会跟着一串字符,那串字符就是您的账户ID。
-
您的API令牌 (API Token):
- 这是最重要的凭证,请勿泄露给他人。
- 登录 Cloudflare 仪表板。
- 点击右上角的用户头像,选择 “我的个人资料 (My Profile)”。
- 在左侧菜单选择 “API 令牌 (API Tokens)”。
- 点击 “创建令牌 (Create Token)”。
- 找到 “编辑 Cloudflare Pages (Edit Cloudflare Pages)” 模板,点击 “使用模板 (Use template)”。
- 您可以保持默认设置,直接滚动到底部,点击 “继续以显示摘要 (Continue to summary)”。
- 最后点击 “创建令牌 (Create Token)”。
- 系统会生成一长串字符,这就是您的API令牌。马上复制它并保存好,因为这个页面关掉后就再也看不到了。
第三步:打开终端并运行命令
-
打开终端:
- Windows系统: 在开始菜单搜索 "PowerShell" 或 "CMD (命令提示符)",然后打开它。
- Mac系统: 在“应用程序” -> “实用工具”里找到并打开“终端 (Terminal)”。
-
进入工具文件夹:
- 在终端里,您需要用
cd命令进入到刚刚解压的那个文件夹。 - 例如,如果您把文件夹解压到了桌面上,命令可能看起来像这样(请根据您的实际路径修改):
- Windows:
cd C:\Users\YourUsername\Desktop\delete-all-deployments - Mac:
cd ~/Desktop/delete-all-deployments
- Windows:
- 小技巧: 您可以输入
cd(注意cd后面有个空格),然后直接把那个文件夹拖拽到终端窗口里,路径会自动补全。然后按回车。
- 在终端里,您需要用
-
安装依赖:
- 在终端里,确保您已经在
delete-all-deployments文件夹内,然后输入以下命令并按回车:npm install - 它会自动下载并安装这个小工具需要的一些组件,请稍等片刻。
- 在终端里,确保您已经在
-
运行删除命令:
- 这是最关键的一步。请复制下面的命令模板,并将括号里的中文替换成您在第二步中获取到的信息。
- 注意: 官方提供了两个命令,建议您使用第一个,这个命令会保留您当前正在线上生效的那个版本,只删除其他的预览版和旧版本,更安全。
推荐使用的命令 (保留线上版本):
CF_API_TOKEN=[替换成您的API令牌] CF_ACCOUNT_ID=[替换成您的账户ID] CF_PAGES_PROJECT_NAME=[替换成您的项目名称] npm start请将上面的命令修改成您自己的版本,例如:
CF_API_TOKEN=aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890 CF_ACCOUNT_ID=123456789abcdef123456789abcdef CF_PAGES_PROJECT_NAME=yyszone npm start- 将您修改好的完整命令,粘贴到终端里,然后按回车。
第四步:等待脚本运行完成
- 脚本会开始工作,连接到Cloudflare并一个个删除您的部署记录。因为数量很多,这个过程可能需要几分钟甚至更长时间。
- 请耐心等待,直到终端显示完成信息或者不再有新的输出。
-
PS D:\迅雷下载\delete-all-deployments> npm start
> delete-all-deployments@1.0.0 start
> node index.jsFound live production deployment to exclude from deletion: 132a70a6-28d6-437c-8e41-173a4f24810c
Listing all deployments, this may take a while...
Skipping production deployment: 132a70a6-28d6-437c-8e41-173a4f24810c
Deleted deployment 6a6a0750-7cc7-41ab-9fee-d65be7aa147f for project yyszone
Deleted deployment 0bc2cf59-8d5f-4e36-859e-785bd4cc6bce for project yyszone
Deleted deployment c773c27c-c762-4453-8e28-9ffeba6d3944 for project yyszone
Deleted deployment b837c80a-4101-441c-a215-d59cd209c823 for project yyszone
Deleted deployment f7ffedd5-bf16-4483-a729-ee572ff56a20 for project yyszone
Deleted deployment 0149b5b5-978f-49c8-b06c-120905a1fabd for project yyszone
Deleted deployment de5e6269-5810-4d28-b31a-355e1ff64835 for project yyszone
Deleted deployment 578a0edc-6f6a-4c82-84d0-5f2dd3df3cca for project yyszone
Deleted deployment c98270d9-7df0-439d-ab16-c67c9a0ad8d6 for project yyszone
Deleted deployment 2339e328-9373-43ad-90a6-0476e4adf741 for project yyszone
Deleted deployment b96fffd5-9034-4dd1-adf1-c46dd57e14df for project yyszone
Deleted deployment f8cef5b8-cf5d-4e50-8a7c-02b790b238b5 for project yyszone
Deleted deployment 7545ad9e-7855-4065-8d68-7601b9038f06 for project yyszone
Deleted deployment a02c1e02-7bdb-4949-b679-8391abf6b43b for project yyszone
Deleted deployment 0d424304-d4e0-4809-954b-1be7543b86a4 for project yyszone
Deleted deployment 0ce7580e-cfbe-4fc0-89f1-262990657a03 for project yyszone
Deleted deployment e1d14b93-0e64-4d57-a85a-f35d9392d0f8 for project yyszone
Deleted deployment 9701809c-b5fe-4166-a808-775c3ba2d7f0 for project yyszone
Deleted deployment 0a6a4686-b49d-4f23-8aa6-50be06eaf08e for project yyszone
第五步:回到网页删除项目
- 当上面的脚本运行完毕后,您项目的大部分部署记录已经被清除了。
- 现在,回到您最开始的Cloudflare Pages项目设置页面,再次点击“删除项目”按钮。
- 这一次,您应该就可以成功删除了!
六总结
通过 GitHub Actions 自动更新 Hugo 数据后,使用 Cloudflare Deploy Hook 可强制部署,即便你使用了 [skip ci]。
这个方法特别适合:
- 新闻聚合站
- 热榜类网站
- 定时爬虫生成页面的网站
延伸阅读
- Hugo 官网:https://gohugo.io/
- Cloudflare Pages:https://pages.cloudflare.com/
- GitHub Actions 文档:https://docs.github.com/actions
评论区(0 条)
发表评论⏳ 加载编辑器…