上周末在搭建个人锻炼页面时,遇到个Github Pages部署的困惑。
看了running_page项目文档,是支持部署到Github Pages页面的,对应的操作流程定义在github/workflows/gh-pages.yml文件。
- name: Install dependencies
run: pnpm install
- name: Build
run: PATH_PREFIX=/${{ github.event.repository.name }} pnpm build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist repository
path: './dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
核心逻辑就是上面这段。
之前搞过部署hugo静态站点到Github Pages,使用的分支方式部署,编译后的静态文件单独用一个分支存放。
这里以我自己的博客项目举例,大致流程如下图:

按我的理解,这里最终访问的文件内容是存在gh-page分支下的。
但是实际部署完running_page项目后,我发现并没有出现gh-page分支,但是Github Pages却可以正常访问。
有点不可思议,这个访问的数据是在哪里的呢?
带着这个疑问,在v2ex上发了个咨询贴。
经过网友解惑,大致搞明白了这里的流程:

Github Pages的发布源有两种方式,通过分支部署和通过Github Actions部署,分别对应上图的两条分支。
这里最终都会将build后的静态文件部署到Github Pages服务上,供用户访问。
分支部署的方式,其实是有一个内置工作流部署到Github Pages服务上的。

整个部署流程大致就是这样,最终的静态文件都是存在Github Pages服务上的。