Github Action 自动部署Hexo

Github Action 自动部署Hexo

我个人搭建博客已经有走过了很长的一段路程了,从之前的博客园 -> WordPress -> 自主建站 -> 到现在的 Github Page,从原来的喜欢折腾,到现在的不想做任何维护,心态也发生了很大的变化,现在只想找一个什么都不管,就专心写博文的平台,在 17 年接触到了 Hexo,那个时候发现这个 nodejs 实现的博客框架真的很不错,生成页面的速度很快,也提供了 ejs 构建自己的渲染主题,而且搭配 github page,让我感受到了前所未有的清爽,轻量,迅速,现代化的 UI,各种插件(评论插件,访问量插件,随便举几个例子),一瞬间就俘获了我,但是每次都得 generate 和 deploy 太麻烦了,于是在 github action 推出的时候,我也第一时间把这些繁琐的事情 CI/CD 化了,接下来就介绍一下如何配合 github action 实现懒人之道。

1.项目背景

项目 介绍 可见性
lingme.github.io github page 仓库,用于存放 hexo 生成的静态站点文件 public
lingme.github.io.repository hexo 源文件仓库 private

2.部署密钥生成

hexo 编译后需要 push 到 lingme.github.io 上,需要用 ssh-keygen 命令生成一组私钥(没有后缀名)和公钥(.pub 结尾)

  1. 我们打开终端,输入 ssh 命令生成一组密钥

ssh-keygen -f github-deploy-key

  1. 打开 lingme.github.io 仓库,点击 setting / deploy key ,然后点击 add new key,使用

pbcopy < github-deploy-key.pub

命令将 key value 拷贝到剪切板,然后复制到 add new key 的输入框中,名称可以填写 HEXO_DEPLOY_PUB ,记住一定要勾选 allow write

  1. 打开 lingme.github.io.repository 仓库,点击 setting / secrets / add new key,使用

pbcopy < github-deploy-key

命令将 key value 拷贝到剪切板,然后复制到输入框中,名称可以取名为 HEXO_DEPLOY_PRI

3.创建 github action workflow

点击 lingme.github.io.repository 的 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
44
name: HEXO CI

on: [push]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]

steps:
- uses: actions/checkout@v1

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}

- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "lingme"
git config --global user.email "kid--l@hotmail.com"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm install hexo-deployer-git --save
npm i
- name: Generate static blog file
run: |
hexo generate
- name: Import custom extension style
run: |
chmod +x ./endPoint.sh
./endPoint.sh
- name: Deploy to github page
run: |
hexo deploy

记住要在自己的 hexo _config.yml 里头配置自己的部署地址:

1
2
3
4
deploy:
type: git
repo: git@github.com:lingme/lingme.github.io.git
branch: master

中间可以加一些中间过程,比如我的 workflow 步骤中有一个步骤叫做 Import custom extension style ,他会运行一个 shell 脚本,帮我做一些博客样式上面的调整,如果你绑定了域名,请把 CNAME 文件放到 hexo 源文件的 source 文件夹中,这样 generate 的时候才会一起打包。

然后可以在 source/_posts 中写一个 md 博文,并且 push 到服务器上面测试了。

我们登陆 github ,看到 action 已经在跑自动化流水线了

等一分钟左右,喝杯茶,我们发现 hexo 已经被自动化部署好了,访问一下域名看成果把

评论