将 Hexo 部署到 Cloudflare Workers Sites 上

2021-12-31 更新:目前 Cloudflare Pages 已开放,可以连接 GitHub 仓库实现自动部署,方便快捷无污染

Cloudflare 在2019年发布了 Workers Sites 产品,可以把静态网站直接存储在 Workers KV 中,然后使用 Workers 调用,这样可以利用 Cloudflare 几百个边缘节点,加速站点加载。然而 Workers KV 之前一直是收费服务,没法白嫖,所以我之前的网站还是托管在 Vecel,而且说实话速度也不错(虽然访问的人本来就不多)。

好消息是资本家为了占领市场 Cloudflare 近日大发慈悲,提供了免费的 Workers KV 试用,虽然有读写查删的限制(The free tier includes 100,000 read operations and 1,000 each of write, list and delete operations per day, resetting daily at UTC 00:00, with a maximum total storage size of 1 GB. ),但对于我这种没什么人看的网站是够用了的,因此我第一时间把它部署到了 Cloudflare Workers Sites 上,体验到了飞一样的速度。

简单的讲,只需要在使用 GitHub Actions 持续集成 Hexo 博客并发布的配置基础上增加几行就可以了:

1
2
3
4
5
6
- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@1.3.0
env:
USER: root
with:
apiToken: ${{ secrets.CF_WORKERS_TOKEN }}

当然你还要在项目中增加一份 wrangler 的配置,下面稍微展开说一下

配置 wrangler

创建 Cloudflare API Token

这里创建一个 API Token,选择提供的编辑 Cloudflare Workers 模板,自定义作用域和权限即可。

编辑 wrangler.toml

在源文件夹根目录下新建 wrangler.tomal 文件,配置如下:

1
2
3
4
5
6
7
8
9
10
name = "hexo"
type = "webpack"
account_id = "$yourAccountId"
workers_dev = false
route = "example.com/*" # Your domain
zone_id = "$yourZoneId"

[site]
bucket = "./public" # Add your build directory name here
entry-point = "workers-site"

使用 GitHub Action 部署到 Cloudflare Workers Sites

将之前创建的 API Token 添加到 GitHub 仓库的 Secrets,之后在 GitHub Action 配置的最后调用 Wrangler CLI 的 GitHub Action 即可。

1
2
3
4
5
6
- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@1.3.0
env:
USER: root
with:
apiToken: ${{ secrets.CF_WORKERS_TOKEN }}

参考