双仓库分离法(源码仓库私有,编译仓库公开)
如果你希望使用 GitHub Pages 官方托管,或者强力要求 GitHub 上必须有一个公开的仓库用来“备份”或者展示你的纯静态 public 文件,你可以建立两个仓库。
- 仓库 A(
blog-source):设置为 Private(私有)。里面存放你所有的 Hexo 源码(Markdown、think.yml、themes/、package.json)。 - 仓库 B(
blog-output):设置为 Public(公开)。里面最初什么都没有。
🛠️ 编写专用的 GitHub Actions 跨仓库推送脚本:
在你私有的 仓库 A 中,创建 .github/workflows/deploy.yml。我们需要利用一个支持跨仓库推送的 Action(使用 personal access token)把编译结果塞进 仓库 B:
1 | #YAML |
🔑 关于 MY_PERSONAL_TOKEN 的配置: 因为是跨仓库推送,默认的 GITHUB_TOKEN 权限不够。你需要去 GitHub 账号的 Settings -> Developer Settings -> Personal Access Tokens (Tokens classic) 生成一个勾选了 repo 权限的 Token。然后把它复制到你私有源码仓库 A 的 Settings -> Secrets and variables -> Actions 中,添加为一个名为 MY_PERSONAL_TOKEN 的加密变量。
生成 Token:
点击你的 GitHub 头像 -> Settings -> 左侧最底部 Developer Settings -> Personal access tokens -> 选择 Tokens (classic)。
点击 Generate new token (classic)。
Note 填:hexo-deploy-token。
权限勾选:把 repo 这一大项完全勾选上(必须包含 repo:status, public_repo 等)。
点击最下方 Generate token,复制生成出来的那串以 ghp_ 开头的长代码(注意:离开页面后它就再也看不到了)。
把 Token 塞进私有源码仓库:
打开你的私有源码仓库 blog-source 的 GitHub 页面。
点击顶部的 Settings -> 左侧菜单找到 Secrets and variables -> 点击 Actions。
点击右侧的 New repository secret 按钮。
Name 必须严格填写:MY_PERSONAL_TOKEN
Secret/Value 粘贴:刚才复制的那串 ghp_… 代码。
点击 Add secret 保存。