Deploy with Workers 按钮使用指南

为开发者和使用者而写的指南。需要使用该按钮的用户请看 使用 一节,需要设置该按钮的开发者请看 开发 一节。

由于 Cloudflare Workers 的特殊性,该按钮无论是使用还是设置起来都比 Vercel 的按钮复杂多了,而且文档也语焉不详,所以特地写了一篇文章。

写于 2024 年 10 月,如果之后流程有变请评论通知我修改。

使用

Deploy to Cloudflare Workers

为这个样子的按钮提供的指南。

开始之前

需要有一个 GitHub 账号。

最好提前注册好一个 Cloudflare 账号(如果没有,会在部署过程中提示注册)。

Authorize GitHub with Workers

没啥可说的,点击按钮后在 GitHub 授权即可。

Authorize

Configure Cloudflare Account

这步比较复杂。

首先登录/创建一个 Cloudflare 账户。

下一步中, Account ID 按照它的指引(点击链接)后可以直接找到,很方便; API Token 略微复杂一些,下面细说。

首先点击它提供的 My Profile 链接,这个链接应该会直接指向 API Tokens 这个页面(如果没有,先登录,然后重新点击这个链接)

点击 Create Token 按钮;

选择 Edit Cloudflare Workers 这个 template

然后下一个界面里,

  1. 修改 Token name (不必要但推荐)
  2. Permissions 不需要修改
  3. Account Resources 和 Zone Resources 都选 Include All 就行
  4. TTL 可以不管

Continue to Summary 然后 Create Token。

复制此时显示的 Token,然后返回 Deploy Button 的网页填入。

Deploy with GitHub Actions

这里跟着指引应该很轻松。

  • 先点下按钮,会自动 Fork Repo(此时 Repo 中会自动创建数个 CF 相关的 Action Secrets)
  • 按照指引前往(点击链接)前往 GitHub 启用 GitHub Actions
  • 最后点击 Deploy 按钮,等待一段时间(一般就几分钟)让 GitHub Actions 跑完就部署好了。

如果 GitHub Actions 报错,请联系仓库原主人,有可能是他的 GitHub Actions 配错了/没有为 Fork 的仓库考虑。

开发

Cloudflare 有一篇文档,但是年久失修,且不全。https://developers.cloudflare.com/workers/tutorials/deploy-button/。所以才写了本文。

我的一个使用了该按钮的例子: yy4382/read-aloud: 运行于 Cloudflare Workers 上的微软“大声朗读”转发器。通过简单的 HTTP GET 请求,将文本转换为语音。

原理

这篇教程适用于使用 wrangler 进行部署的 Cloudflare Workers 项目,比如 Hono 项目。

Deploy with Cloudflare 按钮的基本原理是帮用户 Fork 你(开发者)的 Repo,然后使用 Repo 中的 Actions 部署 Worker 到 Cloudflare 中。

而由于这个按钮会帮助用户 Fork,因此作为开发者需要做的就是设置一个 GitHub Actions,可以在任何仓库中进行部署。

设置 Actions

首先,需要保证你的项目可以直接通过 wrangler deploy 命令(不带其他选项)进行部署。需要注意的是,如果是 Hono 创建的项目,可能需要在 wrangler.toml 中增加 main 属性指定入口文件(一般是 src/index.ts[x])。

然后添加 .github/workflows/deploy.yml,以下是我推荐的一个例子

name: Deploy Worker
on:
  push:
    branches:
      - main # trigger deploy everytimes pushed to main
  repository_dispatch: # The deploy button relies on this line to work
  workflow_dispatch: # gives you a button to manually trigger job

jobs:
  deploy:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v2
      - name: Build & Deploy Worker
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          accountId: ${{ secrets.CF_ACCOUNT_ID }}
          # workingDirectory: # required if your wrangler.toml is not in root dir
          # See https://github.com/cloudflare/wrangler-action for more options

可以发现,使用了 CF_API_TOKENCF_ACCOUNT_ID 两个 secret,作为开发者需要手动设置(在 GitHub Actions 中使用机密 - GitHub 文档),而你的用户通过 Deploy with Cloudflare 按钮 Fork 时会被自动设置好。

然后尝试手动运行该 Action,确定可以正常运行。

插入按钮

[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/YOURUSERNAME/YOURREPO) 中的 YOURUSERNAMEYOURREPO 替换一下之后就可以放在任何 Markdown 文档里了。

本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.0
2023-2024 Yunfi. | Source Code RSS | Site Map Powered by Astro. See all Credits.