博客迁移之旅-从本地部署到使用GithubAction

迁移原因

原先我的博客是使用 hexo 在本地生成然后再发布到 Github Pages 上的。 但是很明显这种方式有很多弊端。

  1. 写作和部署必须在我的本地机器上才能完成,基本断绝了远程写作的可能。
  2. 备份和恢复相当麻烦,对于我这种经常在主力机上重装系统的人来说非常的不友好。

所以我就想着能不能将我的博客的生成和部署的过程使用免费的 CI/CD 工作流实现。 于是我就把目标放到了 Github Action 上。

迁移过程

非常幸运的是,因为 hexo 的用户数量非常的多,所以在 Github Action (以下简称 GH) 上有着丰富的预设脚本可以参考,同样的,相关的教程也非常的多。

这里我就参考了这篇博客的大部分流程,当然,由于我使用的主题和配置与他的并不完全一致,所以我的工作流配置文件也不完全相同。

以下为我的 Workflow 模版配置文件。

1
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
name: HEXO_DEPLOY
on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout source
uses: actions/checkout@v1
with:
ref: main

- uses: actions/setup-node@v3
with:
node-version: lts/*

- name: Install pandoc
run: |
cd /tmp
wget -c https://github.com/jgm/pandoc/releases/download/2.14.0.3/pandoc-2.14.0.3-1-amd64.deb
sudo dpkg -i pandoc-2.14.0.3-1-amd64.deb

- name: Setup hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_SECRET }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "80513590+OOJ2003@users.noreply.github.com"
git config --global user.name "OOJ2003"
npm install -g hexo-cli
npm install
hexo clean
hexo d


由于我使用的 latex 插件需要 pandoc 环境,所以我额外加入了安装 pandoc 的步骤。

使用方式

与迁移前其实差异不大,但是不需要手动执行命令去部署了,只要写完后 commit 就会自动触发生成和部署。

碎碎念

我使用的主题支持自动生成博客文章的创建时间戳和更新时间戳,但是转到使用 GH 部署后每篇文章的更新时间就变成了最新的 commit 时间戳。。。看了主题的 issue 区貌似有别人也遇到了类似的问题,而且没有什么特别好的解决方法。

不过非常幸运的是,如果在博文源文件的 Front-matter 里手动加入一个 updated 字段,就会覆盖掉自动生成的时间戳,所以就将就着这么写了(?


博客迁移之旅-从本地部署到使用GithubAction
https://ooj2003.github.io/2022/12/13/博客迁移之旅-从本地部署到使用GithubAction/
作者
OOJ2003
发布于
2022年12月13日
更新于
2023年3月14日
许可协议