用 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.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27name: 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既能看到最新的文章页面啦!