使用 GitHub Actions + Hexo + GitHub Pages ,白嫖 GitHub 的服务器资源建立可以自己更新的个人博客。

连命令行都可以不用敲了,嘻嘻。

前提

电脑已经安装Node.js以及Git,知道什么是GitHub,用过Hexo

1. 建立一个私人 Repo 用于保存源码

这个 Repo 下面简称源代码 Repo

例如:https://github.com/Dragon-Fish/ghpages

2. 建立一个名字叫 <用户名>.github.io 的 Repo

这个 Repo 下面简称网站 Repo

例如:https://github.com/Dragon-Fish/dragon-fish.github.io

3. 创建 ssh 连接密钥,并上传 GitHub

  1. 在自己的电脑上用命令行敲:ssh-keygen -t rsa -C "<你的邮件地址>"
  2. 一路回车,直到系统提示生成完毕
  3. 找到生成的两个文件id_rsa以及id_rsa.pub
  4. id_rsa.pub是公钥,点击自己的头像 → 设置 → ssh → 添加,把 id_rsa.pub 里的东西复制粘贴保存
  5. id_rsa是私钥,需要保存到源代码 Repo 里,进入 Repo → 设置 → secrets → 添加 → 把 id_rsa 复制粘贴上去保存,我这里保存时设置的 title 叫HEXO_DEPLOY_PRIVATE_KEY,可以换成任意你觉得好听的名字,但是下面会用到,所以不要设置一些花里胡哨的名字,以免气死自己

4. 设置工作流

进入源代码 Repo → Actions → 新建

以下是我设置的工作流,借鉴了来自互联网的一些资料,仅供参考

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
# 工作流名称
name: 自动部署GitHub Pages

# 当 master 分支的内容变更,自动开始
on:
push:
branches:
- master

jobs:
build:
# 使用最新版ubantu虚拟机运行
runs-on: ubuntu-latest

steps:
# from: https://github.com/actions/checkout
- name: 本工作流
uses: actions/checkout@master

# 安装最新版 Node.js
# from: https://github.com/actions/setup-node
- name: 安装Node.js 10.x
uses: actions/setup-node@master
with:
node-version: "10.x"

- name: 安装Hexo及其依赖
run: |
npm install hexo-cli -g
npm install

- name: 设置ssh密钥
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
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: 配置Git
run: |
git config --global user.name '<GitHub用户名>'
git config --global user.email '<GitHub邮件地址>'
git config core.quotepath false

- name: 使用Hexo生成静态文件
run: |
hexo clean
hexo generate

- name: 推送到GitHub Pages
run: |
hexo deploy

5. 基本就完成了

对源代码 Repo 的 master 分支做出的任何修改都会触发上面的工作流,自动构建 hexo 网页并推送到网站 Repo

作者的话

白嫖真爽,全自动白嫖,嘻嘻