首页 / 工作流自动化 / GitHub Actions 矩阵构建 + Cloudflare Pages 部署:打造全自动多环境 CI/CD 流水线实战 2 次阅读
GitHub Actions 矩阵构建 + Cloudflare Pages 部署:打造全自动多环境 CI/CD 流水线实战
工作流自动化

GitHub Actions 矩阵构建 + Cloudflare Pages 部署:打造全自动多环境 CI/CD 流水线实战

从零搭建生产级 CI/CD:矩阵策略并行测试、多环境自动部署、构建缓存优化,2026 年最新实践指南

2026 年 3 月 2 日 · 约 12 分钟阅读

你是否也遇到过这些痛点:每次推送代码都要手动测试多个 Node.js 版本、部署流程繁琐易出错、多环境配置混乱难以维护?在 2026 年,CI/CD 已经成为现代开发的标配,但如何搭建一套高效、可靠、可扩展的自动化流水线仍然是个挑战。

本教程将带你从零开始,利用 GitHub Actions 2025 年底更新的矩阵策略和 Cloudflare Pages 最新的 Direct Upload 功能,搭建一套完整的多环境 CI/CD 流水线。通过本教程,你将掌握:

  • GitHub Actions 矩阵构建(Matrix Build)的核心原理与实战配置
  • Cloudflare Pages Direct Upload 部署通道的完整使用流程
  • 多环境(Staging/Production)自动识别与一键部署
  • 构建缓存优化与部署速度提升 50% 的进阶技巧
  • 生产级错误处理、回滚机制与监控告警
CI/CD 流水线架构图:代码推送触发 GitHub Actions,矩阵构建并行测试,自动部署到 Cloudflare Pages 多环境

核心概念与原理

GitHub Actions 矩阵构建(Matrix Build) 允许在同一 workflow 中并行运行多份任务,覆盖不同的操作系统、Node.js 版本或环境变量。每个 matrix 组合都会生成单独的 job,无需重复编写 workflow 模板,大幅提升并行测试效率。

Cloudflare Pages Direct Upload 是 Cloudflare 2025 年推出的部署通道,通过 Wrangler CLI 将构建产物直接上传至 Pages 平台,绕过传统的 Git 集成方式,实现更灵活的 CI/CD 集成。配合 GitHub Actions 触发器,推送代码即可自动构建并部署到指定环境。

矩阵构建示意图:单个 job 拆分为多个并行任务,每个任务对应不同的 Node.js 版本和操作系统组合

环境准备与依赖

📦
GitHub 仓库
包含应用源代码及 workflow 定义目录 .github/workflows/
🟢
Node.js 18/20
运行时环境,GitHub Actions 将测试多个版本兼容性
🔧
Wrangler v3
Cloudflare 部署 CLI,支持 Direct Upload 与多环境管理
🔐
Cloudflare API Token
需具备 Pages—Edit 权限,存储于 GitHub Secrets
🐳
Docker(可选)
用于多阶段构建优化与镜像缓存加速

实战步骤

1

创建 Cloudflare Pages 项目与 API Token

登录 Cloudflare Dashboard,进入 Pages 创建新项目(或直接使用现有项目)。然后创建 API Token:

  • 导航至「我的个人资料」→「API Tokens」→「创建 Token」
  • 选择模板「编辑 Cloudflare Pages」,或手动勾选权限:Account.Cloudflare Pages#edit
  • 限制到特定 Account 和 Project,点击「继续摘要」并生成 Token
安全提示:API Token 具有项目写入权限,切勿泄露或提交到代码仓库。请妥善保管并在下一步配置为 GitHub Secret。
Cloudflare API Token 创建界面截图,显示权限配置选项
2

配置 GitHub Secrets 存储敏感信息

进入 GitHub 仓库的 Settings → Secrets and variables → Actions,添加以下 Secrets:

# Cloudflare API Token(必需)
CLOUDFLARE_API_TOKEN=你的 API Token

# Cloudflare Account ID(可选,用于多项目管理)
CLOUDFLARE_ACCOUNT_ID=你的账户 ID

# 部署环境分支映射(可选)
STAGING_BRANCH=staging
PRODUCTION_BRANCH=main

这些 Secrets 将在 workflow 中通过 ${{ secrets.SECRET_NAME }} 语法引用。

3

初始化 Wrangler 配置

在项目根目录安装 Wrangler CLI 并初始化 Pages 配置:

# 安装 Wrangler(推荐全局安装)
npm install -g wrangler

# 或使用 pnpm/bun
pnpm add -g wrangler
bun add -g wrangler

# 初始化 Pages 项目(交互式)
wrangler pages project create your-project-name

# 本地测试构建(验证配置)
wrangler pages dev ./dist --port 8788

初始化完成后,项目根目录将生成 wrangler.toml 配置文件,包含项目名称、兼容性标志等设置。

Wrangler CLI 初始化终端输出截图,显示项目创建成功信息
4

编写 GitHub Actions 矩阵构建 Workflow

创建 .github/workflows/ci-cd.yml,定义完整的 CI/CD 流水线:

name: CI/CD Pipeline

on:
  push:
    branches: [main, staging]
  pull_request:
    branches: [main, staging]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20]
        include:
          - node-version: 18
            test-flags: '--coverage'
          - node-version: 20
            test-flags: '--coverage --experimental-vm-modules'

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test ${{ matrix.test-flags }}

      - name: Build
        run: npm run build
        if: matrix.node-version == 20

      - name: Upload build artifact
        uses: actions/upload-artifact@v4
        with:
          name: dist-node${{ matrix.node-version }}
          path: ./dist
          retention-days: 1
        if: matrix.node-version == 20

这个配置会并行运行两个 Node.js 版本的测试,仅在 Node 20 上执行构建并上传产物。

GitHub Actions 运行界面截图,显示矩阵构建的并行 job 列表
5

添加 Cloudflare Pages 部署 Job

在同一 workflow 文件中追加部署 job,根据分支自动判断目标环境:

  deploy:
    needs: build-and-test
    runs-on: ubuntu-latest
    if: github.event_name == 'push'
    environment:
      name: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }}
      url: ${{ steps.deploy.outputs.deployment-url }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Download build artifact
        uses: actions/download-artifact@v4
        with:
          name: dist-node20
          path: ./dist

      - name: Setup Wrangler
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}

      - name: Deploy to Cloudflare Pages
        id: deploy
        uses: cloudflare/pages-action@v1
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          projectName: your-project-name
          directory: ./dist
          gitHubToken: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ github.ref == 'refs/heads/main' && 'main' || 'staging' }}
提示:environment 字段会在 GitHub 仓库的 Environments 中创建生产/预发环境,支持配置保护规则、审批流程与环境变量。
GitHub Environments 配置界面,显示生产与预发环境的环境变量与保护规则
6

配置 Wrangler 多环境支持

修改 wrangler.toml 添加多环境配置,实现 Staging/Production 差异化管理:

name = "your-project-name"
compatibility_date = "2025-12-01"
pages_build_output_dir = "./dist"

# 生产环境配置
[vars]
ENVIRONMENT = "production"
API_BASE_URL = "https://api.example.com"
LOG_LEVEL = "error"

# 预发环境覆盖配置
[env.staging]
name = "your-project-name-staging"
routes = []
[env.staging.vars]
ENVIRONMENT = "staging"
API_BASE_URL = "https://staging-api.example.com"
LOG_LEVEL = "debug"

部署时通过 --env staging--env production 指定环境,Wrangler 会自动加载对应配置。

7

优化构建缓存与部署速度

2026 年 GitHub Actions 与 Cloudflare Pages 均支持构建缓存,配置后可提升 50% 速度:

      - name: Cache npm dependencies
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-

      - name: Cache Wrangler build
        uses: actions/cache@v4
        with:
          path: .wrangler/state
          key: ${{ runner.os }}-wrangler-${{ hashFiles('wrangler.toml') }}
          restore-keys: |
            ${{ runner.os }}-wrangler-

对于大型项目,还可启用 Cloudflare Pages 的远程缓存:

# wrangler.toml 添加
[pages_build]
output_dir = "./dist"
enable_cache = true
cache_key = "${{ github.sha }}"
构建缓存对比图表:启用缓存前构建耗时 4 分 30 秒,启用后降至 2 分 10 秒
8

添加部署通知与回滚机制

生产级 CI/CD 必须包含失败通知与快速回滚能力。在 workflow 末尾添加:

  notify:
    needs: deploy
    runs-on: ubuntu-latest
    if: failure() && github.ref == 'refs/heads/main'
    steps:
      - name: Send Slack notification
        uses: slackapi/slack-github-action@v1
        with:
          payload: |
            {
              "text": "🚨 生产环境部署失败!",
              "blocks": [
                {
                  "type": "section",
                  "text": {
                    "type": "mrkdwn",
                    "text": "*生产部署失败*\n仓库:${{ github.repository }}\n分支:${{ github.ref }}\n提交:${{ github.sha }}\n运行:${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
                  }
                }
              ]
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

  rollback:
    needs: deploy
    runs-on: ubuntu-latest
    if: failure() && github.ref == 'refs/heads/main'
    steps:
      - name: Rollback to previous deployment
        run: |
          wrangler pages deployment rollback --env production

常见问题与解决方案

Q: 部署失败提示「API token 无效」
检查 GitHub Secret 是否正确配置,确保 API Token 具有 Account.Cloudflare Pages#edit 权限。Token 生成后请立即复制保存,关闭后无法再次查看。
Q: 矩阵构建运行时间过长
使用 include 限制只在特定版本执行构建,其他版本仅运行测试。启用 npm 和 Wrangler 缓存,二次构建可提速 50% 以上。
Q: 如何区分 Staging 和 Production 环境变量?
在 wrangler.toml 中使用 [env.staging][env.production] 分别配置,或通过 GitHub Environment 的环境变量覆盖。
Q: 部署后页面 404 或白屏
检查 directory 路径是否指向正确的构建产物目录,确保 index.html 存在于根路径。本地运行 wrangler pages dev ./dist 验证。
Q: 如何实现手动审批后部署到生产?
在 GitHub Settings → Environments → production 中启用「Required reviewers」,添加审批人。部署到生产时会等待审批通过。

总结

  • GitHub Actions 矩阵构建支持并行测试多环境,大幅提升 CI 效率
  • Cloudflare Pages Direct Upload 提供灵活的 CI/CD 集成方式,无需 Git 连接
  • 通过 wrangler.toml 多环境配置实现 Staging/Production 差异化管理
  • 启用 npm 与 Wrangler 缓存可提升构建速度 50% 以上
  • 生产级流水线应包含失败通知、审批流程与快速回滚机制
下一步: 尝试将本教程的 workflow 集成到你的项目中,根据实际需求调整矩阵策略与部署环境。对于更复杂的场景,可探索自托管 Runner、多区域部署与蓝绿发布。
选择栏目
今日简报 播客电台 实战教程 AI挣钱计划 关于我
栏目
全球AI日报国内AI日报全球金融日报国内金融日报全球大新闻日报国内大新闻日报Claude Code 玩法日报OpenClaw 动态日报GitHub 热门项目日报AI工具实战AI应用开发编程实战工作流自动化AI原理图解AI Agent开发AI变现案例库AI工具创收AI内容变现AI接单提效变现前沿研究
我的收藏
播客版
0:00
--:--