时光绘梦集

返回首页
随机箴言:在陌生人面前,适当高调,人们都是嫌贫爱富,欺软怕硬的。

正文区域

cnb部署项目到EO pages②


夏夜万年 |2026-11-06 18:11:25

我之前发表过一篇cnb一键部署到edgeone的文章,我之前的cnb仓库代码也一直使用这种方式部署的代码。

不过,今天我修改了部署方式,使用了另一种方式,先对比它们的不同。

之前的部署方式:

1.去EO pages申请apikey

2.cnb使用apikey和项目名向EO pages发送部署请求

3.cnb向EO pages传输文件然后部署。

现在的部署方式

1.EO pages上的一个项目绑定cnb仓库中的一个分支

2.cnb仓库中的这个分支向EO pages发送部署请求

3.EO pages来cnb仓库拉取代码然后部署。

两种各有千秋吧,不过我更推荐现在的这一种。

设置步骤如下

1.登陆EO pages,新建项目,或者选择已有的项目,然后选择git平台,选择cnb,然后选择自己的仓库,选择生产分支(只有这个分支会触发部署),然后在构建设置中选择根目录,我的代码是在src文件夹下,就在后面输入src/,如果源代码就在根目录下就不用管,以后部署就会拉取这个目录下所有代码到eo pages。

2.在cnb仓库部署钩子,可以理解为一个触发器。指定操作就会触发,push就是提交代码就会触发。

先修改.cnb.yml文件,代码如下。

"main":
  push:
   lin1:
    runner:
      cpus: 1
    stages:
      - name: notify
        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 }}"
            }

如此,后续在main分支,当提交代码时,就会触发部署(按照我上面的代码,eo pages绑定的必须是main分支,当前分支也必须是main分支才会触发,其他分支不会触发,可按需修改)

两种方式对比:

第一种需要apikey,但是可以设置项目名,任何分支都可以部署到任何项目上。

第二种不用apikey,但是需要绑定项目和仓库的分支,之后只有这个分支能部署,只能部署这个项目。

然后吧,我之前部署的纯前端代码,后来也就加上了一些EO function,没有涉及构建部署的代码和命令。现在我的代码中加入了一些构建命令,ai说我原来的第一种部署方式不行了,只能使用现在的第二种方式才可以正常构建,不过我也懒得测试了,索性就直接转成这一种了。

记录下,后续有需要可充当备份查看!!