edgeOne中 从git创建的项目是如何做到,git更新,就重新构建的
好问题。EdgeOne Pages 从 Git 创建的项目之所以能「git 一更新就重新构建」,本质就是它和你的 GitHub 仓库之间建立了一条自动回调链路。我先用官方文档确认一下细节,再给你讲清楚原理。 EdgeOne Pages 从 Git 创建的项目,之所以「git 一更新就重新构建」,靠的是它在你的 GitHub 仓库上自动装了一套「事件订阅 + 自动部署开关」。下面把链路讲清楚。
一、创建时发生了什么(自动建立回调)
你用「导入 Git 仓库」方式建项目时:
- 通过 GitHub OAuth 授权,EdgeOne 在你的账号/仓库上安装一个 GitHub App(集成);
- 这个 App 会自动订阅该仓库的
push事件(等同于平台在后台帮你建好了一个 webhook,无需你手动配置); - 你选择仓库和生产分支(默认
main)以及框架。
所以你在本地 git push 那一刻,GitHub 会主动发一个事件通知给 EdgeOne —— 这就是「监听推送事件」的本质。
二、触发后的判断逻辑(环境 + 自动部署开关)
EdgeOne 每个项目内置两个固定环境:
| 环境 | 关联分支 | 触发效果 |
|---|---|---|
| 生产 (Production) | 你绑定的生产分支(如 main) | 更新线上站点 |
| 预览 (Preview) | 其它所有分支 / PR 源分支 | 生成独立预览 URL |
而且每个环境都有一个 「自动部署」开关(在 项目设置 → 环境管理 → 编辑环境 里):
开启后,每次符合条件的代码提交/合并都会新建一个部署。
也就是说:
git push到main→ 触发生产部署;- 推到一个功能分支或开 PR → 生成预览部署;
- 合并进
main→ 触发生产部署。
如果某天发现「push 了没重建」,先确认这个「自动部署」开关是开着的(默认开,但可能被关掉)。
三、EdgeOne 收到事件后做什么
- 校验事件来源(App 权限/签名)并匹配分支;
- 拉取该次 commit 的代码;
- 按
项目设置 → 构建部署配置里的设置跑构建:- 根目录、安装命令、构建命令(你的就是
npm run build,会先跑prebuild拉数据)、输出目录(dist)、Node 版本、框架预设;
- 根目录、安装命令、构建命令(你的就是
- 构建产物推到边缘节点,把线上域名指向新版本;
- 环境变量在
项目设置 → 环境管理里按生产/预览分别配置,只对新的部署生效。
四、和你这个项目的关联(关键点)
EdgeOne 监听的只是 indie 这个仓库的 push,它并不知道也不会去管外部的 1c7/chinese-independent-developer。
所以:
- 你改了
indie的代码并 push 到main→ EdgeOne 重建 →prebuild重新拉取源数据 → 部署最新内容 ✅ - 但源仓库自己更新了 →
indie没收到任何 push → EdgeOne 不会动 ❌
这正是上一轮我们做「GitHub Actions 定时轮询源仓库 + 部署钩子」的原因:用一个外部定时器去发现源仓库变化,再主动让 EdgeOne 跑一次构建。走了两条不同的「触发路径」——
flowchart LR
subgraph A[直接触发]
P1[push 到 indie/main] --> E[EdgeOne 监听 push 事件] --> B[自动重建+部署]
end
subgraph C[外部源仓库触发]
S[1c7 源仓库更新] --> T[你的 Actions 定时检测到变化] --> H[POST 部署钩子] --> B
end
简单说:「git 更新就重建」是 EdgeOne 通过 GitHub App 订阅 push 事件 + 环境「自动部署」开关共同实现的;而要让「别人仓库更新也重建」,就得在前面再接一层你自己的调度与部署钩子。