0%

Hexo+Github Action自动部署

因为Hexo三连太麻烦了,尤其是我还得切wsl,所以搞了下自动部署

部署好之后的流程是:

1
2
3
4
5
graph TB
本地写Markdown文件 --> push到github上
push到github上 --> 由GithubAction部署至GithubPages
由GithubAction部署至GithubPages -- 成功 --> 网页部署完毕
由GithubAction部署至GithubPages -- 失败 --> 发邮件提醒

我就想试下流程图

Step 1.

因为 Hexo 的网页是由 Hexo 生成的,所以 GithubPages 上的内容不是写的markdown

为了只写 markdown 然后让 Github 代劳生成网页得新建一个仓库

假定为 user/Blog 好了

在本地 Hexo 的文件夹里先 Hexo clean 清除掉之前生成的文件

记得去把 themes 下的的主题的 .git 文件夹删掉(如果有的话)

然后

1
2
3
4
5
6
git init
git add .
git commit -m "init"
git remote add origin git@github.com:user/Blog.git
git branch -M main
git push -u origin main

把本地库放到 Github 上

Step 2.

为了让 user/Blog 能够在集成的时候访问 user/user.github.io 需要配置密钥对

用如下命令生成一对密钥

1
ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-key-blog -N ""

其中 github-key-blog 是私钥,另一个是公钥

在 Github里 user/Blog 的Setiing -> Secrets 里添加私钥

user/user.github.io 的Setting -> Depoly Key 中添加公钥,记得勾选 Allow write access

这样 user/Blog 就可以写入 GithubPages 的库里了

Step 3.

最后在 user/Blog 处添加一个 Action

内容如下

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
name: Hexo Blog 

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository master branch
uses: actions/checkout@master

- name: Setup Node.js 10.x
uses: actions/setup-node@master
with:
node-version: "10.x"

- name: Setup Hexo Dependencies
run: |
npm install hexo-cli -g
npm install

- name: Setup Deploy Private Key
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.私钥名称 }}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts

- name: Setup Git Infomation
run: |
git config --global user.name '名字'
git config --global user.email '邮件'
- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy

保存之后再 user/Blog 里 push 就会自动更新了(当然挺慢的)