前言
之前博客一直放在服务器上比较麻烦,这次迁移到eopages上,因为eopages终于关联cnb了。
教程
1. 在 EdgeOne Makers 创建项目
登录 EdgeOne Makers 控制台,新建项目并关联你的 cnb 仓库,然后在构建配置里填好构建命令(比如 npm install && npm run build)和输出目录。
注意:构建命令是在 Makers 控制台配置的,
.cnb.yml只负责”通知”,不负责”构建”。
官方文档:cloud.tencent.com/document/product/1552/127369
官方示例:cnb.cool/EdgeOne-Makers/EdgeOne-Makers-Webhook
2. 在仓库根目录创建 .cnb.yml
CNB 不支持原生 Webhook,但好在可以通过 cnbcool/webhook 插件在流水线里发一个 POST 请求。在仓库根目录新建 .cnb.yml:
main:
push:
- stages:
# 通知 EdgeOne Makers 拉取最新代码并触发构建部署
- name: 通知 EdgeOne Makers 部署
image: cnbcool/webhook
settings:
urls:
- https://api.edgeone.ai/eo/pages/hook/cnb
method: POST
content_type: application/json
template: |
{
"repoName": "{{ CNB_REPO_NAME }}",
"repoUrl": "{{ CNB_REPO_URL_HTTPS }}",
"branch": "{{ CNB_BRANCH }}",
"commit": "{{ CNB_COMMIT_SHORT }}",
"commitMessage": "{{ CNB_COMMIT_MESSAGE }}",
"committer": "{{ CNB_COMMITTER }}",
"event": "{{ CNB_EVENT }}",
"buildId": "{{ CNB_BUILD_ID }}",
"buildWebUrl": "{{ CNB_BUILD_WEB_URL }}",
"buildUser": "{{ CNB_BUILD_USER }}",
"pipelineName": "{{ CNB_PIPELINE_NAME }}"
}
3. 配置说明
main.push:监听 main 分支的推送事件,推送到该分支才触发流水线stages:流水线阶段,这里只放了一个 webhook 通知步骤image: cnbcool/webhook:使用 CNB 的 webhook 插件镜像urls:要通知的地址,也就是 EdgeOne Makers 的固定接收地址https://api.edgeone.ai/eo/pages/hook/cnbmethod/content_type:POST + JSON,固定写法template:请求体模板,里面{{ }}是 CNB 内置的环境变量,推送时 CNB 会自动替换成本次构建的真实信息
template 里的变量含义如下:
| 变量 | 含义 |
|---|---|
CNB_REPO_NAME | 仓库名 |
CNB_REPO_URL_HTTPS | 仓库 HTTPS 地址 |
CNB_BRANCH | 当前分支 |
CNB_COMMIT_SHORT | 短提交号 |
CNB_COMMIT_MESSAGE | 提交信息 |
CNB_COMMITTER | 提交者 |
CNB_EVENT | 触发事件 |
CNB_BUILD_ID | 构建 ID |
CNB_BUILD_WEB_URL | 构建详情页地址 |
CNB_BUILD_USER | 构建用户 |
CNB_PIPELINE_NAME | 流水线名称 |
以上这些无需改动
4. 推送触发
把 .cnb.yml 提交并推送到 main 分支:
git add .cnb.yml
git commit -m "添加 EdgeOne Makers 自动部署配置"
git push origin main
推送后 CNB 会执行流水线,webhook 插件把上面的 JSON 发到 Makers,Makers 收到通知后自行拉取仓库代码、按控制台里配置的命令构建并部署。整个过程不用再碰服务器。
注意
- Webhook 地址是固定值,不可修改,必须使用
https://api.edgeone.ai/eo/pages/hook/cnb - 构建命令(装依赖、打包等)是在 Makers 控制台配置的,不在
.cnb.yml里 - 如果只想监听其他分支,把
main换成你的分支名即可
结语
配置好之后,本地写完文章 git push,等一两分钟站点就自动更新了。服务器相关的烦恼(续费、备份、环境、SSL……)都交给 EdgeOne,确实省心不少。