Dogtor

EdgeOne 绑定 CNB 仓库,部署快了一半

从 CLI 全量上传到 Webhook 自动部署

全文共 1276 字,阅读约需 4 分钟

本站是部署在EdgeOne Pages上的,用cnb.cool版本管理,详见这里。本站的工作流是在本地写md文件,然后git到cnb,cnb.yml里配置相应的CI/CD,实现自动部署。见CNB文档:部署 EdgeOne Makers 插件。那时候就纳闷,为什么不能在edgeone上直接绑定cnb仓库,实现自动部署呢?毕竟已经适配了GitHub、GitLab、Bitbucket等代码仓库。自己家的仓库,还不能直接绑定。

昨天更改域名,目前的dogtor.cn域名在国内备案了,加速区域可以选择全球范围(含中国大陆)。所以要重新建一个edgeone项目。这个时候发现,CNB赫然在列,可以直接绑定。

cnb赫然在列
cnb赫然在列

绑定之后,发现部署失败了,检查了一下,是因为edgeone项目没有配置webhook,导致自动部署失败。"CNB 暂不支持原生 Webhook,需要通过 Webhook 插件来触发部署。请参考 CNB Webhook 插件 在您的 CNB 仓库中配置,配置完成后每次推送代码即可自动触发部署。"

让AI处理了一下,Webhook配置完成后,没想到效果拔群。之前部署要两分多钟,现在不到一分钟就可以搞定了。

script:最少得两分多钟
script:最少得两分多钟

webhook:一分钟内搞定
webhook:一分钟内搞定

总结

咨询了一下DeepSeek老师,分析了一下两种方案的耗时差异。

方案 1:在 CNB 里跑 npm run build + edgeone pages deploy

这个方案在 CNB 的流水线里做了三件事:

  • npm run build:在 CNB 容器里从零开始构建,包括 npm install、编译、打包。
  • edgeone pages deploy out/:调用 EdgeOne CLI,把 out/ 目录完整打包上传到 EdgeOne Pages。
  • EdgeOne Pages 侧接收全量文件,再分发到 CDN。

耗时主要来自:

  • CNB 构建阶段:每次都要重新跑一遍依赖安装和构建(除非 CNB 流水线本身配了缓存)。
  • 上传阶段:EdgeOne CLI 要把整个 out/ 目录(可能包含几百上千个静态文件)通过 HTTP 逐个或打包上传,受限于 CNB 到 EdgeOne 的网络带宽。
  • EdgeOne 侧处理:接收全量文件、计算哈希、更新 CDN。

方案 2:CNB/Webhook

这个方案的本质是:CNB 把构建和部署都交给了 EdgeOne Pages 的云端构建系统。

典型流程是:

  • CNB 流水线里只做一件事——触发一个 Webhook(或者调用 EdgeOne 的 API),把代码仓库地址、分支、commit 等信息传给 EdgeOne。
  • EdgeOne Pages 自己的构建系统去拉取你的仓库代码,在它自己的构建环境里执行 npm run build,然后直接部署。

耗时差异的关键在这里:

对比项方案 1方案 2
构建执行者CNB 容器EdgeOne Pages 构建系统
构建缓存依赖 CNB 流水线缓存配置EdgeOne 自带构建缓存,node_modules、构建产物缓存命中率高
产物传输CNB → EdgeOne,全量上传无需跨服务传输,构建完直接部署
部署方式CLI 全量上传平台内部增量/优化部署
网络路径CNB 出口带宽 → EdgeOne 入口EdgeOne 内网,零跨服务传输

一句话总结:能交给平台自己做的,就别自己搬砖。

评论

你的邮箱我们会严格保密,仅用于必要时的联系,不会在页面上公开显示。

表情直接显示在输入框中

请遵守相关法律法规,友善发言。垃圾广告、辱骂、违法违规内容将被删除。

Dogtor

人间札记,记录读书、琐事、思考,有烟火气,不硬核。

本站为个人博客,内容仅供学习和记录用途。

法律信息

© 2024-2026 博士狗的人间札记. 版权所有,未经许可请勿转载。

鄂ICP备2025135897号

本站总访问量:0次