前言
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
参考这个配置需要注意几点:
如果你的公开仓库与私有仓库在同一个账号下:
- 第 14 行的 false 改为 true
- 第 35 行的 url 不需要
${{secrets.<secrets_name>}}@
这一段
- 如果你不需要 GitHub Pages 绑定域名,需要把第 30 行删除。
- 使用
Secrets
的好处是可以随时更换 PAT,且不会在配置文件中泄露敏感信息。
使用 Cloudflare 加速 + 隐藏真实地址(可选)
由于某些不可抗拒因素,在国内访问 xxx.github.io
是一个很魔幻的事情,有时很慢,甚至无法打开。
对于这种情况,可以使用 Cloudflare 加速访问。
同时,如果你不愿公开 GitHub Pages 的静态资源文件,但开启 GitHub Pages 后,使用 xxx.github.io
的方式访问的话,新建 GitHub 账号也将毫无意义。即使配置域名后,虽然在一定程度上隐藏了真实地址,但仍可以通过扫描 DNS 记录,找到真实的 xxx.github.io
的地址。
幸运的是,Cloudflare 在加速访问的同时,也帮你隐藏了真实的地址。
原来私有仓库用来建站要付费,哭哭。。。
真的可以发评论吗, 测试一下