GitHub自动部署HEXO个人博客

使用GitHub白嫖搭建一个个人博客,并且使用GitHub Action自动的部署,省去自己hexo clean | hexo g | hexo d等繁琐操作,直接提交git即可
Note:本教程在Windows下使用

建立仓库

我这里分了两个仓库,一个 username.github.io,用来部署自己的个人博客,这里是hexo生成的,且需要是一个public仓库
另一个仓库MyBlogSource,用来存放hexo init出来的博客源码,可以是private的
也可以在一个仓库里用不同分支来做
GitHub仓库SSH密钥配置这里不赘述,属于git配置的范畴

HEXO安装和配置

如果已经有自己配置过HEXO可以直接跳过这部分
此处默认git已安装

下载安装node.js

https://nodejs.org/en/

安装HEXO

假设已经创建好了上一步的两个仓库并clone到了本地

源码存放的仓库路径为:C:/Users/Documents/GitHub/MyBlogSource

hexo部署仓库本地路径为:C:/Users/Documents/GitHub/username.github.io

打开git bash并把路径定位到源码仓库

这个语句用来安装HEXO
npm install -g hexo-cli

这个语句在这个文件夹下初始化HEXO
hexo init

下面这个语句install一些依赖
npm install

到这里就初始化完成HEXO了

HEXO配置可以参考官网修改配置文件_config.yml,官网文档是 https://hexo.io/zh-cn/docs/configuration

此处不介绍如何修改主题,需要的话推荐一个本站使用的开源主题项目Melody

网址:hexo-theme-melody

此时的文件夹结构应该大致是如下情况:

  • MyBlogSource
    • Source
    • _config.yml 配置文件

HEXO推送配置

将推送配置单独说一下

hexoDepolySetting

这里会使用gitconfig全局设置的ssh key

使用HEXO部署

在hexo init时候的根目录下可以使用命令来生成博客

hexo clean – 会清除掉生成的public文件夹

hexo g – 重新生成public文件夹

hexo d – 将仓库推送到配置的路径

hexo s – 本地localhost:4000 查看部署出来的网站

推送到git后就可以访问username.github.io查看自己的网站了

使用个人域名

不需要使用个人域名的可以跳过

域名注册申请备案和DNS解析购买这里不介绍

在网页上打开GitHub的 username.github.io

选择Settings,选择Pages,填上自己的域名

然后到DNS解析服务商添加解析规则,我用的阿里云

红框里面的四个都加上

最后一个加上后,需要在博客源码仓库本地路径的Source文件夹里添加一个CNAME文件,不要任何后缀,用记事本打开添加上网址,比如我的就是 muchenhen.com

然后重新部署,等待dns解析生效之后就可以通过域名访问自己的博客

用GitHub Action自动部署

因为每次写完之后都要手动部署很烦

而且更烦的是多设备同步问题,都要重新弄hexo的环境,不如干脆买个轻量应用服务器一键搭建WordPress随便哪个设备都能写博客……(不是

用HEXO+GitHub主要是想白嫖(不是

所以用GitHub Action减少上述的麻烦

这里不介绍GitHub Action相关的知识,直接写如何使用来自动化部署hexo

前往本地的博客源码仓库C:/Users/Documents/GitHub/MyBlogSource

添加推送用的key

在本地用git bash生成一堆新的密钥,我这里取的名字是github-deploy-key

将pub的key添加到HEXO部署仓库,在网页上打开 username.github.io,来到settings,打开Deploy keys,添加一个新的key,将刚生成的pub复制粘贴进来

然后到博客源码仓库,在网页上打开,settings,secrets,将私钥复制粘贴到这里面,记住你添加的这个secret的名字

配置Action

在.github文件夹下添加一个文件夹workflows,在这个文件夹里添加一个文件HEXO_CI.yml
这里可以参考我的来改一下,我把源码贴在这里并写上注释,注意需要修改的地方:git设置,secret名

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: Deploy

on: [push]

jobs:
build:
runs-on: ubuntu-latest
name: A job to deploy blog.
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: true # Checkout private submodules(themes or something else).

# Caching dependencies to speed up workflows. (GitHub will remove any cache entries that have not been accessed in over 7 days.)
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12' #超过12的版本有几个warning,我不想处理

# Deploy hexo blog website.
- name: Setup Hexo
env:
# 定义了一个变量 secrets里面添加的名字
ACTION_DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
# 创建了一个ssh文件夹
mkdir -p ~/.ssh/
# 把key复制进去
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
# 配置git
git config --global user.email "muchenhen@gmail.com"
git config --global user.name "muchenhen"
# 安装hexo
npm install hexo-cli -g
npm install

- name: Deploy
run: |
hexo clean
hexo deploy

这样就会在每次push的时候触发这个Action,自己生成并部署hexo了~


GitHub自动部署HEXO个人博客
http://muchenhen.com/posts/58254/
作者
木尘痕
发布于
2021年12月5日
许可协议