前言

之前博客一直放在服务器上比较麻烦,这次迁移到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/cnb
  • method / 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,确实省心不少。