594 字
2 分钟
CNB 自动部署 EdgeOne Pages:.cnb.yml 实战
除了常见的 GitHub Actions、Pages 方案,这个站也可以用 CNB(cnb.cool)做自动化部署。
核心思路很简单:只要 push 到 main,就自动执行 构建 + 发布。仓库根目录的 .cnb.yml 就是入口配置。
流水线在做什么
当前流程可以理解成三步:
- 引入环境变量:从仓库里单独维护的
envs.yml(或你在 CNB 里配置的等价变量)注入密钥等,避免全部写死在主配置里。 - 构建:在
node:22镜像里安装 pnpm,执行pnpm install和pnpm run build,得到dist/。 - 部署:用 腾讯云 EdgeOne Pages 的官方 CLI,把
dist推到指定项目。
和本仓库当前配置大致对应如下(具体以你仓库最新文件为准):
main: push: - imports: https://cnb.cool/*/envs.yml stages: - name: Build Current Project image: node:22 script: node -v && npm install -g pnpm && pnpm install && pnpm run build - name: Deploy to EdgeOne Pages image: node:22 script: npx edgeone pages deploy ./dist -n blog-cnb -t $EDGEONE_API_TOKEN几个关键点:
main/push:推送到默认分支main时触发。imports:拉取远端或本仓的变量定义,供后续 stage 使用(例如EDGEONE_API_TOKEN)。- 两阶段串行:先产出
dist,再部署;第二阶段直接npx edgeone pages deploy即可,不一定要再装一遍 pnpm(除非你想合并阶段)。
EdgeOne 侧要准备什么
- 在 EdgeOne / Pages 控制台创建好站点,并拿到可用于 CI 的 API Token。
- 在 CNB 的变量或
envs.yml里配置EDGEONE_API_TOKEN(与脚本里的$EDGEONE_API_TOKEN名称一致)。 -n blog-cnb是 CLI 里的 项目名称(与控制台里一致即可);若你改名,需同步改.cnb.yml里的参数。
本地想手动试部署的话,也可以先 pnpm run build,再执行同一条 npx edgeone pages deploy ...,排错会更直观。
安全与维护建议
- 不要把明文 Token 长期放在公开仓库里。更稳妥的做法是只在 CNB 平台的“密钥/环境变量”里配置,或者使用私有
imports。如果envs.yml曾经泄露过密钥,记得及时轮换 Token。 - 构建命令与正式站点一致(
pnpm run build),这样本地、CI、文档里说的产物路径(如./dist)才能对齐。
小结
.cnb.yml 的核心价值就是把 “装依赖 -> 构建 -> 发布” 固定成可重复流程。
你只管写文章、push 代码,部署会自动完成。
如果你同时保留 .github/workflows/deploy.yml,两套 CI 也能共存,按你的分支策略选用即可。
CNB 自动部署 EdgeOne Pages:.cnb.yml 实战
https://kongdf.com/posts/learning/devops/cnb-edgeone-deploy/ 部分信息可能已经过时