cnb部署项目到EO pages②
我之前发表过一篇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说我原来的第一种部署方式不行了,只能使用现在的第二种方式才可以正常构建,不过我也懒得测试了,索性就直接转成这一种了。
记录下,后续有需要可充当备份查看!!