持续集成(CI)
把部署搬进 CI 之后,本地就不再需要任何 Cloudflare 凭据,wrangler login 那套 OAuth 流程也彻底不用了——这是它最大的价值:CI 用的是一份权限可控、可随时吊销的 API Token,而本地那次 OAuth 授权会一直绑在你的开发机上。
.github/workflows/deploy.yml— 部署流水线,只有这一个文件要新增文件夹
src/— 应用代码- …
wrangler.jsonc— Worker 配置,要提交进仓库.dev.vars— 本地密钥,被 gitignore,CI 用不上它package.json/ lockfile — 决定 CI 里装什么
建一个最小权限的 API Token
Section titled “建一个最小权限的 API Token”在 Cloudflare 控制台的个人 API Token 页面,用 Edit Cloudflare Workers 模板建 token。它给到的权限范围是 Worker 脚本、KV、路由的写权限,够用且不含账单和域名管理。
放进 Actions secrets
Section titled “放进 Actions secrets”仓库 Settings → Secrets and variables → Actions,加两个:
| Secret | 内容 |
|---|---|
CLOUDFLARE_API_TOKEN |
上一步建的 token |
CLOUDFLARE_ACCOUNT_ID |
账号 ID,控制台右侧可查 |
name: Deploy
on: push: branches: [main] workflow_dispatch:
permissions: contents: read
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- uses: actions/setup-node@v4 with: node-version-file: package.json cache: npm
- run: npm ci
- name: Build run: npx astro build
- name: Deploy uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: deployenv.MY_SECRET 这种值不要写进 wrangler.jsonc(那文件是公开的)。两种正确做法:
# 一次性:直接推到平台npx wrangler secret put MY_SECRET# 或者在 CI 里从 Actions secret 注入 - name: Sync secrets run: echo "$MY_SECRET" | npx wrangler secret put MY_SECRET env: MY_SECRET: ${{ secrets.MY_SECRET }}给 PR 单独部署一份,比共用测试环境省事。两种路子:
# 1. 临时预览账号,不需要任何凭据,产物会被回收npx wrangler deploy --temporary
# 2. Worker Versions 的 preview URL,在你账号里但带随机子域npx wrangler versions upload配置项全在 wrangler.jsonc 参考里,命令清单见命令参考。