前言

自动化部署是什么意思?即把HEXO博客的源代码上传到GitHub仓库,当该仓库中的代码发生变动时,自动通过安装一系列环境和依赖,生成HTML文件与GitHub pages仓库。即无需在本地使用指令hexo clean,hexo g,hexo d;这种项目持续集成的方式有很多种,本文选择GitHub action,如选择其他方式可自行百度;

优点:

  • 随时随地增加或者修改博文,我只需登录GitHub存放源代码的仓库,在里面新建博客,编写播客即可,无需由于电脑上没有安装node.js,git等环境而发愁;
  • 如果万一本地文件丢失,我也可以通过博客源代码仓库,git clone一份到本地

创建HEXO源代码仓库

在GitHub上新建一个仓库,仓库名任意,类型选择private,防止上篇文章中获取的GitHub令牌暴露;

本地仓库添加远程库

在根目录下即BLOG文件夹下,右键打开Git Bash Here,输入以下指令:

1
2
3
4
5
6
7
8
git init
git config --global user.name 你的用户名
git config --global user.email 你的邮箱
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/用户名/新建的私有仓库名.git(私有仓库的地址)
git push -u origin main

将私有仓库地址换成上文创建的HEXO源代码仓库地址即可,在提交的过程中,会要求输入GitHub用户名与密码,输入即可。上述步骤完成后,刷新私有仓库,即可看见本地仓库的一些文件被上传至私有仓库,并不是全部文件都上传,在根目录下有一个.gitignore文件,里面防止了无需上传到私有仓库的文件,保持该文件默认即可,无需修改

配置GitHub Action实现自动化部署

新建workflow

在新建的HEXO源代码私有仓库中,点击Action按钮,在提示的一行信息中有这样一行字set up a workflow yourself,点击这行文字;

配置Action

将自动生成的main.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
name: Deploy # 部署

on: # 触发条件
push:
branches:
- main # 推送到 main 分支(这里的分支名很重要,不要弄错了)

release:
types:
- published # 推送新版本号

workflow_dispatch: # 手动触发

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout # Checkout 仓库
uses: actions/checkout@v2
with:
ref: main

- name: Setup Node # 安装 Node.js
uses: actions/setup-node@v1
with:
node-version: "12.x"

- name: Install Hexo # 安装 Hexo
run: |
npm install hexo-cli -g
- name: Cache Modules # 缓存 Node 插件
uses: actions/cache@v1
id: cache-modules
with:
path: node_modules
key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

- name: Install Dependencies # 如果没有缓存或 插件有更新,则安装插件
if: steps.cache-modules.outputs.cache-hit != 'true'
run: | # **如果仓库里没有 package-lock.json,上传一下,npm ci 必须要有 package-lock.json**
npm ci
- name: Generate # 生成
run: |
hexo clean
hexo generate
- name: Deploy # 部署
run: |
git config --global user.name "GitHub用户名"
git config --global user.email "GitHub邮箱"
git clone (换成自己的GitHub pages地址
export TZ='Asia/Shanghai'
hexo deploy

在git clone处换成自己在上篇文章中,新建的仓库(用户名.github.io)这个仓库的地址

git config —global user.name “GitHub用户名”与git config —global user.email “GitHub邮箱”,也替换成自己的即可

设置完成后,点击右上角的start commit

查看状态

点击Action按钮,即可查看部署状态,成功后,打开用户名.github.io这个网址即可发现网站部署成功

HOW TO USE

日后如何使用,打开根目录即BLOG目录,右键Git Bash Here,输入如下指令即可:

1
2
3
git add .
git commit -m "添加文章"
git push