用 github私有仓库保存 hexo 源码,并通过 actions 发布到公共仓库的 gitpage
起始缘由
原本博客的发布方式为:
- 在本地部署好 Hexo 博客的运行环境
- 通过 [hexo g] 将写好的 Markdown 文件转化为 HTML 文件
- 然后用 [hexo d] 把生成的 public 文件夹内所有内容推送到 Github 仓库中
这样直接将生成的可以运行的实际产物(生产版)推送到 GitHub 仓库上,而不是博客源码(开发版),每当本地环境变更或者想在别的电脑上写文章时就麻烦了、必须得重新部署一遍环境,而且也不会留存历史变更记录。详细参见之前的博文:用 hexo + gitpage 搭建博客以及 gitpage 绑定自定义域名。
由此想到,何不把博客源码推送到 Github 仓库中,利用 GitHub 来对源码进行版本控制,同时也利于博客未来的维护、更新!以下就是折腾记录。
步骤记录
GitHub Actions 是 GitHub 推出的持续集成服务,入门教程可参考:GitHub Actions 入门教程.
规划为:一个私有仓库 _blog 用于存放博客源码,原公共仓库 [actpi.github.io] 用于存放博客产物 public, 此仓库已启用了 Github Pages 用作博客展示。
-
获取 GH_TOKEN 首先到个人中心设置 Personal access tokens,token 能让 GitHub Actions 构建所在的虚拟系统对发布仓库拥有权限可以进行推送操作。
-
设置 Actions Secrets 新建 _blog 仓库,将本地目录的 hexo 源码推送到_blog 仓库里,然后进到 _blog 仓库的 设置-[secrets and variables]-[Actions]-[secrets]里新建一个名为[ACCESS_TOKEN]的键值项,内容填上一步获取到的 token 值。
-
Actions 设置 在博客源码根目录下新建目录 .github/workflows ,然后在其下新建任务文件 deployment.yml
name: Publish Hexo to gitpage on: push: branches: - main # 如果源码与gitpage用同一仓库则修改为hexo源码对应分支 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: ref: main - name: Install dependencies run: | npm install -g hexo-cli # 给虚拟机装上hexo运行环境 npm install # 安装 package.json 中记录的所有插件 - name: Generate Hexo site run: | hexo clean hexo generate - name: Deploy to B repo uses: peaceiris/actions-gh-pages@v3 with: personal_token: ${{ secrets.ACCESS_TOKEN }} # Personal access token external_repository: actpi/actpi.github.io # 发布的仓库地址 PUBLISH_BRANCH: main PUBLISH_DIR: ./public -
此时即可愉快的编写 Markdown 文件推送到 github,然后前往源码仓库的 Actions,即可看到自动化任务正在进行,等待一会看到所有任务执行成功,再刷新博客地址https://actpi.github.io既能看到最新的文章页面啦!