在使用Hexo框架,在修改或新建了文章后。都需要执行以下几个命令才能部署到服务器:

  1. hexo clean
  2. hexo generate
  3. hexo deploy

要我们更新文章后,只需要简单的push到远程仓库,服务器自动完成部署该多爽啊!github提供的Actions就能帮我们实现。

下面我们使用两个仓库来进行实验:

名称 功能
blog 一个私有仓库用来存储源文件
tglingli.github.io 一个公共仓库用来部署博客

生成ssh键值对

1
ssh-keygen -t rsa -f github_deploy -N "" -C "github actions deploy ssh key"

指行以上命令后我们将得到两个文件“github_deploy.pub”和“github_deploy”分别对就ssh的公匙和私匙。公匙是需要上传到部署服务器上的,私匙是需要上传到源码仓库服务器上的。

为源码仓库添加ssh私匙

为部署仓库添加ssh公匙

在源码仓库中添加Actions

在源码仓库.github/workflows/目录下添加一个Hexo_deploy.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
name: Hexo deploy

on:
push:
branches: [main]

jobs:

environment:
name: Setup Nodejs
runs-on: ubuntu-latest
steps:
- name: Setup Nodejs
uses: actions/setup-node@v2
with:
node-version: '16.x'
- name: Nodejs version
run: echo Nodejs version $(node -v)

hexo_deploy:
name: Hexo deploy
runs-on: ubuntu-latest
needs:
- environment
steps:
- name: Generate ssh private key file
env:
ACTION_DEPLOY_KEY: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: Config git author
run: |
git config --global user.name "tglingli_deploy"
git config --global user.email "tglingli@foxmail.com"
- name: Setup Hexo
run: |
npm install hexo
npm list
- name: Check envrionment
run: |
echo Nodejs version: $(node -v)
echo Hexo version:
npx hexo --version
echo git config information:
git config --global --list
- name: Checkout source
uses: actions/checkout@v2
with:
ref: main
fetch-depth: 0
- name: Deploy
run: |
npm install
npx hexo clean
npx hexo deploy

当向main分支推送后运行效果如下

运行效果