Github Actions实现Hexo自动化部署
1. 配置SSH
- 在Windows环境下,安装git。官网地址
- 安装完成后,在任意文件目录下点击鼠标右键,在弹出的右键菜单中选择
git bash here
,调出git命令行工具 - 在命令行工具窗口中输入以下命令,生成密钥文件
1
2# 生成秘钥
ssh-keygen -f github-deploy-key - 这时当前目录中会生成两个文件
github-deploy-key
为私钥文件github-deploy-key.pub
为公钥文件
2. 在Github中配置公钥和私钥
- 首先转到Hexo源代码仓库,在仓库上方菜单中找到 Settings -> Secrets and variables -> Actions -> New repository secret 创建一个私钥的secrets,如下图所示
- 其中
Name
为自定义的私钥名称,会在之后的步骤中使用,Secret
是github-deploy-key
私钥文件的内容,用vscode等工具打开,将文件中的内容粘贴进去即可 - 转到Hexo站点目录,在Github中是用户名+.github.io形式的仓库,在仓库上方菜单中找到Settings -> Deploy keys -> Add deploy key,创建一个公钥的key,如下图所示
- 其中
Title
为自定义的公钥名称,Key
为公钥内容,用vscode等工具打开github-deploy-key.pub
公钥文件,并将其中内容全部内容粘贴进去即可
3. 创建Gtihub Actions
- 转到Hexo源代码仓库,在根目录下新建
.github
目录,下一级新建workflows
目录,下一级创建文件deploy_blog.yml
。目录结构为[自己博客根目录]/.github/workflows/deploy_blog.yml
- 用vscode打开
deploy_blog.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
58
59
60
61
62
63# 未优化和整理的脚本
name: Blog CI/CD
# 触发条件:在 push 到 master 分支后触发
on:
push:
branches:
- master
permissions:
contents: write
jobs:
blog-cicd:
name: Hexo blog build & deploy
runs-on: ubuntu-latest # 使用最新的 Ubuntu 系统作为编译部署的环境
steps:
- name: Checkout codes
uses: actions/checkout@v2
- name: Setup node
# 设置 node.js 环境
uses: actions/setup-node@v1
with:
node-version: '16.x'
- name: Cache node modules
# 设置包缓存目录,避免每次下载
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- name: Install hexo dependencies
# 下载 hexo-cli 脚手架及相关安装包
run: |
npm install -g hexo-cli
npm install
- name: Generate files
# 编译 markdown 文件
run: |
hexo clean
hexo generate
- name: 配置 SSH 环境和 Git 环境
env:
ACTION_DEPLOY_KEY: ${{ secrets.PRIVATE }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "373974021@qq.com" # 注册Github的邮箱
git config --global user.name "Arthur-Delacroix" #Github的用户名
- name: 部署博客
run: |
npm install hexo-deployer-git --save
hexo d
4. Hexo Deploy配置
注意,在Hexo源代码仓库中,各类源代码要放在文件在根目录下,否则在推送的时候会有目录丢失等各类问题
- 在Hexo源代码仓库中,找到配置文件
_config.yml
,打开后在文件最下方填写以下内容1
2
3
4
5
6
7# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
# 要推送的目标仓库ssh链接
repo: git@github.com:Arthur-Delacroix/arthur-delacroix.github.io.git
branch: master
这样就实现在使用Github Actions,当在本地编辑完博客内并进行push操作后,Github Actions会自动使用Hexo将博客生成为html文件,并推送到指定仓库中了