Github Action博客自动部署搭建

本文最后更新于:几秒前

Github Action博客自动部署搭建

本文参考自使用 GitHub Action 自动部署 Hexo 博客 | 水木风的个人博客 (dslwind.github.io)GitHub Action + Hexo实现在线写作_磊少1999的博客-CSDN博客_hexo在线编辑,部分有所改动。

Github Action

Github Actions 可以很方便实现 CI/CD 工作流,来帮我们完成一些工作,比如实现自动化测试、打包、部署等操作。Github Action是Github提供的一站式服务,通过设置workflow工作队列,将需要进行的工作部署到Github上自动实现。在hexo博客搭建时,创建博客、hexo clean && hexo g && hexo d三步骤等都十分的繁琐,有时候为了简单博文内容,但手头的设备上没有 hexo 的环境,这时候就可以借助 GitHub Actions 来实现云端部署。因此这里将这些步骤分包到Github Action自动完成;同时,之后若有进一步的动作,如gitee文件同步、更新等操作,就可以同样用Github Action来完成了。

以下是自动部署的步骤:

创建仓库或分支

完成Github Action首先需要规定一个动作,在这里可以指对源码仓库或源码分支的更新,因此需要创建一个新的仓库或者源码来存储现有的源码。即

  • 创建SourceCode仓库存储Hexo的源码文件和markdown文本文件;
  • 继续使用原有的xxx.github.io作为站点仓库。

生成远程密钥

首先在博客blog目录下设置一个新的ssh-key用于部署。

1
ssh-keygen -f github-deploy-key

image-20230116011611023

当前目录将生成 github-deploy-keygithub-deploy-key.pub 两个文件。

Github在线部署

下面的步骤请注意设置的仓库分别是哪个

1、复制github-deploy-key文件中的内容,在源码仓库(SourceCode)Settings->Secrets and variables->Actions->New repository secret设置私钥:

  • 在Name输入框中填写HEXO_DEPLOY_PRI
  • Value 输入框填写 github-deploy-key 文件内容。

image-20230116163126081

2、复制 github-deploy-key.pub 文件内容,在 站点仓库username.github.io 仓库 Settings -> Deploy keys -> Add deploy key 页面上添加。

  • Title 输入框填写 HEXO_DEPLOY_PUB
  • Key 输入框填写 github-deploy-key.pub 文件内容。
  • 勾选 Allow write access 选项。

image-20230116163036531

这样就完成了Github Action的密钥设置。

编写Action脚本

Action脚本采用的是Workflow工作流,其目标在于记录工作的步骤和目的,这里参考了GitHub Action + Hexo实现在线写作_磊少1999的博客-CSDN博客_hexo在线编辑的Action代码,这里我只有自动部署的需求,更多需求可以自行查找Action代码并替换。

在源码目录的根目录中创建.github/workflows/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
# workflow name
name: Hexo Blog CI

# master branch on push, auto run
on:
push:
branches:
#注意这里更改为自己源码的分支
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
# check it to your workflow can access it
# from: https://github.com/actions/checkout
- name: Checkout Repository master branch
uses: actions/checkout@master

# from: https://github.com/actions/setup-node
- name: Setup Node.js 12.x
uses: actions/setup-node@master
with:
node-version: "12.x"

- name: Setup Hexo Dependencies
run: |
npm install hexo-cli -g
npm install

- name: Setup Deploy Private Key
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts

- name: Setup Git Infomation
run: |
# 更改成自己的信息
git config --global user.name '<你的用户名>'
git config --global user.email '<你登录的email>'
- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy

开启Action

开启Action的条件是监听到master的push需求,因此我们需要将源码push到源码仓库的master分支中(自定义)。

1
2
3
4
5
6
7
8
9
10
# 初始化git
git init
# 设置远程仓库
git remote add origin git@github.com:paopao0226/SourceCode.git
# 添加文件
git add .
# 提交commit
git commit -m "提交"
# 推送到仓库中
git push origin master

这里可能会遇到如下问题:

  1. master无法推送:更改当前分支为master分支
  2. ! [rejected] master -> master (fetch first):先pull后push,如果和仓库中的冲突过多可以git push -f origin master暴力覆盖(不推荐)
  3. git push Everything up-to-date:参考博文:

若有其他问题请补充。

推送到仓库之后,Github会自动监听master的推送,并开启Action操作。

image-20230116165235345

这里可能会出现Action的Deploy Hexo出错,这里可能是因为站点仓库受保护的原因,其他原因可以自行点开日志阅读理解。

完成自动部署之后,我们就会看到自己的站点成功更新。


Github Action博客自动部署搭建
http://paopao0226.site/post/4b70d5e.html
作者
Ywj226
发布于
2023年1月16日
更新于
2023年9月23日
许可协议