日拱一卒:Github Pages 静态网站部署 & 域名绑定

641 阅读2分钟

Github Pages 简介

Github Pages 是 Github 推出的一套静态资源部署服务,通过 Github Action 或者 gh-pages 分支的方式你可以很方便地将打包出来的静态站点部署到 Github 提供的服务器上。 image.png

站点类型

有三种类型的 GitHub Pages 站点:项目、用户和组织。

  • 用户站点:仓库名为<username>.github.io,访问地址和仓库名一致。

  • 组织站点:仓库名为 <organization>.github.io,访问地址和仓库名一致。

  • 项目站点:站点文件和项目存储在一个仓库中,访问地址为:http(s)://<username>.github.io/<repository>http(s)://<organization>.github.io/<repository>

    除了 Github 提供的默认域名外,Github 还允许你进行自定义域名: image.png 详见: 关于自定义域名和 GitHub 页面 - GitHub 文档

部署工作流

下面是一个简单的 Github Action 部署脚本,脚本会在 main 分支提交时构建站点并部署到 gh-pages 分支上:

name: Deploy CI

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout 🛎️
        uses: actions/checkout@v3

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 8

      - name: Setup Node.js environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install and Build 🔧
        run: |
          pnpm i
          pnpm run lint
          pnpm run docs:build

      - name: Deploy 🚀
        uses: JamesIves/github-pages-deploy-action@4.1.1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH: gh-pages # The branch the action should deploy to.
          FOLDER: docs-dist # The folder the action should deploy.
          CLEAN: true # Automatically remove deleted files from the deploy branch

绑定自定义域名

CNAME 解析

首先要将自己的域名绑定到 Github Pages 上,首先需要在域名所在的 DNS 服务上添加 cname 记录,以 xxx.example.com 为例,我们需要设置:

域名CNAME
xxx.example.com<organization>.github.io
<username>.github.io

添加 CNAME 文件

其次因为我们时使用工作流的方式部署的站点,因此需要向 gh-pages 分支添加 CNAME 文件。以 dumi 为例会在文档构建时将在 public下的文件打包到最终文档目录下: image.png 添加 CNAME 文件,内容为你的自定义域名,仅一行 image.png

配置自定义域名

在 Settings => Pages => Custom domain 中配置自己的自定义域名即可,Github 会自动将该域名设置为你的可访问域名: image.png

参考

关于 GitHub Pages - GitHub 文档