使用GitHub的Action自动生成和部署Hexo博客

Hexo

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

最近又有点犯懒了,甚至博客都有点懒得写,主要是感觉每次都要生成一次博客文件然后推送,真的很麻烦啊。我在笔记本上面配置好的环境,经常忘记同步到台式上,博客的源文件也经常忘记拉取更新,导致一些旧的博客莫名奇妙就消失了,还要我手动去提交记录里面找到文件恢复出来。于是索性研究了一下怎么用GitHub的Action自动生成和部署博客,一劳永逸。

基本流程概览

graph TB
    A(博客源文件) --推送--> B[博客源文件仓库]
    B --触发Action--> C[/生成用于部署的博客文件/]
    C --推送--> D[博客仓库]

除了博客源文件的撰写是在本地,博客文件的生成、推送都是在博客源文件仓库的Action中生成的。

申请Token用于访问仓库的权限

需要到GitHub个人设置的Developer Settings下面,申请一下Tokens (classic)

image-20241204204529904

Note可以填一个容易辨识的名字,Expiration也就是过期时间一定要选No expiration,即永不过期。Select scopes那里就把仓库的权限全部勾上就可以。

image-20241204205035962

点击生成以后会出现一串token,这串token记下来,稍后会用到。同时这串token不能泄漏给别人,否则别人就有权限操作你的仓库了。

设置存放博客源文件的仓库

为了保证Action生成的博客和在本地预览的效果是完全一致的,这里我将博客源文件连同Hexo的配置文件全部上传到仓库中了。

image-20241204210226489

在仓库的设置中,找到Secrets and variables下的Actions,添加一个secret

image-20241204210422848

Name同样写一个有标识性的名字,最好是大写,不是大写的话GitHub也会自动换成大写的。Secret的内容就填刚刚申请好的token。

然后,需要在存放博客源文件仓库的根目录下创建目录.github/workflows,并在其中创建文件.github/workflows/hexo-actions.yml,内容如下

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
name: Deploy Hexo to Github Pages

# 设置当main分支有新的推送时,触发该Action
on:
push:
branches:
- main

# 设置该Action的job
jobs:
deploy:
runs-on: ubuntu-latest # 使用最新的ubuntu镜像

steps:
- name: Install Git # 安装Git
run: sudo apt update && sudo apt install -y git

- name: Checkout blog source # 获取博客的源文件
uses: actions/checkout@v2
with:
path: blog # 博客的源文件会被放置在blog目录下

- name: Set up Node.js # 安装nodejs
uses: actions/setup-node@v1
with:
node-version: "18"

- name: Cache dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-

- name: Install Hexo CLI and yarn # 安装hexo以及yarn,我个人更习惯用yarn
run: npm install -g hexo-cli yarn

- name: Install dependencies # 进入blog目录,安装博客的依赖
run: yarn install
working-directory: ./blog

- name: Install theme # clone博客使用的主题
run: git clone https://github.com/ChrAlpha/hexo-theme-cards.git blog/themes/cards

- name: Restore theme config. # 将配置好的主题配置复制到对应主题目录下
run: mv blog/themes/_config.yml blog/themes/cards/_config.yml

- name: Generate static pages # 生成博客
run: hexo generate
working-directory: ./blog

- name: Deploy to GitHub Pages # 将生成的博客推送到你对应的仓库中
uses: peaceiris/actions-gh-pages@v3
with:
personal_token: ${{ secrets.PERSONAL_TOKEN }} # PERSONAL_TOKEN更换为你自己的token的名称,一定全写成大写
publish_dir: ./blog/public
external_repository: Syize/Syize.github.io # 更改为你的 GitHub Pages 仓库,格式是username/repo
publish_branch: master # GitHub Pages 的分支

然后试着给博客做一下修改,推送,等着Action给你自动生成和部署吧。

Author: Syize

Permalink: https://blog.syize.cn/2024/12/04/hexo-github-actions/

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog

Comments