使用 Wrangler 命令行工具部署 Cloudflare Workers 和 Pages 项目。
wrangler.toml 配置文件或已创建 WorkerCLOUDFLARE_API_TOKEN 和 CLOUDFLARE_ACCOUNT_ID 属于敏感信息,推荐使用 CNB 密钥仓库存储,并通过 imports 引用注入到流水线环境变量中。
在 CNB 平台 创建仓库,仓库类型选择 密钥仓库。
在密钥仓库中通过 Web 界面创建 envs.yml 文件,内容如下:
CLOUDFLARE_API_TOKEN: your_api_token_here
CLOUDFLARE_ACCOUNT_ID: your_account_id_here
# 访问控制(推荐配置)
allow_slugs:
- 'your-org/**'
# allow_events:
# - push
# - tag_push
# allow_branches:
# - main
访问控制说明:
字段 说明 示例 allow_slugs限制可引用的仓库范围 your-org/**(该组织下所有仓库)allow_events限制可引用的事件类型 push、tag_push、tag_deploy.*allow_branches限制可引用的分支 main、v*一旦配置了
allow_*规则,系统将完全依据这些规则进行校验。详见 配置文件引用鉴权。
本插件支持两种使用模式:Settings 模式(简单配置)和 Script 模式(灵活自定义)。认证信息统一通过 imports 导入密钥仓库注入,无需在 settings 中配置。
安全提示:
CLOUDFLARE_API_TOKEN和CLOUDFLARE_ACCOUNT_ID等敏感信息只能通过imports注入环境变量,禁止在settings中传递。
通过 settings 传入部署参数,插件自动构建并执行 wrangler 命令。认证信息由 imports 注入的环境变量提供。
| 参数 | 必填 | 说明 |
|---|---|---|
deploy_type | 否 | 部署类型:workers(默认)或 pages |
working_directory | 否 | 工作目录路径 |
extra_args | 否 | 额外的命令行参数 |
main:
push:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: build
image: node:20-alpine
script: npm install && npm run build
- name: deploy to cloudflare pages
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
settings:
deploy_type: pages
project_name: my-pages-project
directory: ./dist
branch: main
| 参数 | 必填 | 说明 |
|---|---|---|
directory | 是 | 静态资源目录路径 |
project_name | 是 | Pages 项目名称 |
branch | 否 | 部署分支名称 |
main:
push:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: deploy worker
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
settings:
deploy_type: workers
worker_name: my-worker
| 参数 | 必填 | 说明 |
|---|---|---|
worker_name | 否 | Worker 名称(覆盖 wrangler.toml 中的配置) |
直接在 script 中编写 wrangler 命令,适合复杂或自定义部署场景。
main:
push:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: build
image: node:20-alpine
script: npm install && npm run build
- name: deploy to cloudflare pages
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
script: wrangler pages deploy ./dist --project-name=my-project
main:
push:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: deploy worker
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
script: wrangler deploy
Cloudflare Workers/Pages 支持多环境部署,可以结合 CNB 的自定义部署功能,在 .cnb/tag_deploy 中配置环境。
environments:
- name: staging
description: 预发环境部署
- name: production
description: 生产环境部署
require:
- environmentName: staging
after: 60
通过 tag_deploy.staging 触发:
tag_deploy.staging:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: build
image: node:20-alpine
script: npm install && npm run build
- name: 部署预发环境
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
script: |
wrangler pages deploy ./dist \
-n my-project \
--branch=preview
通过 tag_deploy.production 触发:
tag_deploy.production:
- imports:
- https://cnb.cool/<org>/<secret-repo>/-/blob/main/envs.yml
stages:
- name: build
image: node:20-alpine
script: npm install && npm run build
- name: 部署生产环境
image: docker.cnb.cool/prevailna/deploy-cloudflare:latest
script: |
wrangler pages deploy ./dist \
-n my-project