GitHub 私有仓库免费开启 GitHub Pages 的可行性方案

6,609 阅读1分钟

本文永久链接:GitHub 私有仓库开启 GitHub Pages 的可行性方案

前言

GitHub 的私有仓库开启 GitHub Pages 需要升级为 Pro 用户( $4/mon)。

对于只是需要私有仓库开启 GitHub Pages 的我来说,性价比是非常低的。

在看这篇文章的你,需要知道如何使用 Git 以及 GitHub 的一些基本操作。

创建 GitHub 账号(可选)

如果你不愿公开 GitHub Pages 的静态资源文件,你需要创建一个新的 GitHub 账号,用来存放 GitHub Pages 的静态资源文件。

Tips:新的 GitHub 账号的用户名尽可能的复杂,让人猜想不到。

创建公开仓库

创建一个用于存放 GitHub Pages 静态资源文件的仓库。

创建完仓库后,并不需要自己手动开启 GitHub Pages。

在公开仓库开启 GitHub Pages

当一个仓库创建 gh-pages 后,GitHub 默认为这个仓库开启 GitHub Pages。

有两种方式维护公开仓库的 GitHub Pages。

  • 手动维护

    每次把源代码构建成网站的静态资源后,手动执行 git push 把静态资源上传到公开仓库的 gh-pages 分支。

  • GitHub Actions

    直接在私有仓库配置 Actions,每次 git push 后自动执行构建,并把构建得到的静态资源 git push 到公开仓库的 gh-pages 分支。

强烈推荐使用 GitHub Actions 。GitHub Actions 的配置文件使用 YAML 语法,配置项简单,一次配置,自动发布。

GitHub Actions

在私有仓库中配置 Actions,把源代码构建成静态资源文件后 push 到公开仓库的 gh-pages 分支。

注意:如果公开仓库与私有仓库不在同一个账号,需要把公开仓库账号的 Person access token 添加到私有仓库的 Secrets 中。

Action 配置文件参考:

<xxx> 代表必填项且需要按自己实际情况更改。

 name: Deploy Site
 
 on:
   push:
     branches: [ master ]
 
 jobs:
   build:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
         uses: actions/checkout@v3
         with:
           persist-credentials: fasle # false 是用 personal token,true 是使用 GitHub token
           fetch-depth: 0
 
      # ... TODO Build your site
 
      # <work-dir> 静态资源所在的目录
      # <domain> 需要 github.io 绑定的域名
      # <username> git commit 用户名
      # <mail> git commit 邮箱
      # <message> git commit 的 message
      # <secrets_name> Secrets 名称
      # <github_username> github 的用户名(公开仓库)
      # <repo> 公开仓库名
       - name: Commit and Push
         working-directory: <work-dir>
         run: |
           echo "<domain>" > CNAME
           git init
           git checkout -b gh-pages
           git add -A
           git -c user.name='<username>' -c user.email='<mail>' commit -m '<message>' 
           git remote add origin https://${{secrets.<secrets_name>}}@github.com/<github_username>/<repo>.git
           git push origin gh-pages -f -q

参考这个配置需要注意几点:

  1. 如果你的公开仓库与私有仓库在同一个账号下:

    • 第 14 行的 false 改为 true
    • 第 35 行的 url 不需要 ${{secrets.<secrets_name>}}@ 这一段
  2. 如果你不需要 GitHub Pages 绑定域名,需要把第 30 行删除。

  3. 使用 Secrets 的好处是可以随时更换 PAT,且不会在配置文件中泄露敏感信息。

使用 Cloudflare 加速 + 隐藏真实地址(可选)

由于某些不可抗拒因素,在国内访问 xxx.github.io 是一个很魔幻的事情,有时很慢,甚至无法打开。

对于这种情况,可以使用 Cloudflare 加速访问。

同时,如果你不愿公开 GitHub Pages 的静态资源文件,但开启 GitHub Pages 后,使用 xxx.github.io 的方式访问的话,新建 GitHub 账号也将毫无意义。即使配置域名后,虽然在一定程度上隐藏了真实地址,但仍可以通过扫描 DNS 记录,找到真实的 xxx.github.io 的地址。

幸运的是,Cloudflare 在加速访问的同时,也帮你隐藏了真实的地址。