logo
0
0
WeChat Login
docs: 添加流水线状态徽章到 README

部署 Cloudflare Workers/Pages 插件

pipeline crontab

使用 Wrangler 命令行工具部署 Cloudflare Workers 和 Pages 项目。

前置条件

  • 已有 Cloudflare 账号
  • 已获取 Cloudflare API Token
  • 已获取 Cloudflare Account ID(可在 Cloudflare Dashboard 中查看)
  • 对于 Workers 项目:已有 wrangler.toml 配置文件或已创建 Worker
  • 对于 Pages 项目:已在 Cloudflare Dashboard 创建 Pages 项目(Direct Upload 类型)

密钥仓库配置

CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID 属于敏感信息,推荐使用 CNB 密钥仓库存储,并通过 imports 引用注入到流水线环境变量中。

1. 创建密钥仓库

在 CNB 平台 创建仓库,仓库类型选择 密钥仓库

2. 添加密钥文件

在密钥仓库中通过 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限制可引用的事件类型pushtag_pushtag_deploy.*
allow_branches限制可引用的分支mainv*

一旦配置了 allow_* 规则,系统将完全依据这些规则进行校验。详见 配置文件引用鉴权

使用方式

本插件支持两种使用模式:Settings 模式(简单配置)和 Script 模式(灵活自定义)。认证信息统一通过 imports 导入密钥仓库注入,无需在 settings 中配置。

安全提示CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID 等敏感信息只能通过 imports 注入环境变量,禁止settings 中传递。

模式一:Settings 模式

通过 settings 传入部署参数,插件自动构建并执行 wrangler 命令。认证信息由 imports 注入的环境变量提供。

参数必填说明
deploy_type部署类型:workers(默认)或 pages
working_directory工作目录路径
extra_args额外的命令行参数

部署 Cloudflare Pages

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_namePages 项目名称
branch部署分支名称

部署 Cloudflare Workers

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_nameWorker 名称(覆盖 wrangler.toml 中的配置)

模式二:Script 模式

直接在 script 中编写 wrangler 命令,适合复杂或自定义部署场景。

部署 Cloudflare Pages

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

部署 Cloudflare Workers

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

架构设计

参考文档