上周末在搭建个人锻炼页面时,遇到个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,使用的分支方式部署,编译后的静态文件单独用一个分支存放。

这里以我自己的博客项目举例,大致流程如下图:

github-pages-deploy-flow

按我的理解,这里最终访问的文件内容是存在gh-page分支下的。

但是实际部署完running_page项目后,我发现并没有出现gh-page分支,但是Github Pages却可以正常访问。

有点不可思议,这个访问的数据是在哪里的呢?

带着这个疑问,在v2ex上发了个咨询贴

经过网友解惑,大致搞明白了这里的流程:

github-pages-deploy-flow

Github Pages的发布源有两种方式,通过分支部署和通过Github Actions部署,分别对应上图的两条分支。

这里最终都会将build后的静态文件部署到Github Pages服务上,供用户访问。

分支部署的方式,其实是有一个内置工作流部署到Github Pages服务上的。

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