hexo个人博客搭建————自动部署
2024-12-09 11:13:16

之前写博客的时候还没注意,后来在修改博客的时候,发现不停的敲命令发布确实烦。

为了解决博客发布占用时间的问题,查了一圈论坛,和相关人员的解决方案。

最终,我选中了github Action,对于托管在github上的hexo来说,这玩意真是好用。

另外,我目前只部署到github上,暂时不考虑部署到gitee和coding上。

正文

方案选择

在正式确立工作流之前,这里是有两个方案的。

  1. 在GIthub.io那个仓库中新建源码分支,等到分支提交时候,触发命令,然后github流程化部署,博客上线
  2. 新建一个仓库,用来管理博客,博客每次提交,就会触发命令,然后github流程化的自动部署,博客上线

这两种方案,一开始我更倾向于第一种,因为没什么必要,不多开项目,总是好的。

但是后来考虑到源码内容中,总会有这种隐私性质的秘钥之类的,放在开源项目确实不好。

而且,目前很多论坛都倾向于第二种方案,想了想,那这里选择新建仓库吧。

新建仓库

参考市面上大多数人的选择,我在github建了一个blog仓库,注意新仓库是私有的

因为,这个仓库是用来存博客源码的,为了规避秘钥被别人看到,所以不能设置为public!

在新仓库准备完成之后,我们清空本地仓库的远程链接,然后,让本地的hexo博客源码和远程新仓库完成对接。

这里我魔改了一下安知鱼大佬的流程,咳咳,如果要新建仓库的话,就参考他的教程,我这是对已有的源码修改。

  1. 删除博客主题的git文件,比如我这里是anatolo。我删除了/themes/anatolo/.git文件,避免主题文件夹下的.git文件夹其被识别成子项目,无法被上传到源码仓库。

  2. 在博客根目录下,运行指令,我这里是在E:\gitPro\blog

    1
    2
    3
    git init #初始化
    git remote add origin git@github.com:crazystudent13/blog.git
    git checkout -b main # 切换到main分支,
  3. 添加屏蔽项

    因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。

    我再E:\gitPro\blog\.gitignore,屏蔽了以下文件,如果你应用了主题里边的配置项,记得,主题里边的gitignore文件也要完成修改。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    TXT.DS_Store
    Thumbs.db
    db.json
    *.log
    node_modules/
    public/
    .deploy*/
    .deploy_git*/
    .idea
  4. 之后再运行 git 提交指令,将博客源码提交到 github 上。

    1
    2
    3
    git add .
    git commit -m "github action update"
    git push origin main
  5. 此时你的主题文件夹若已经被正常上传,并且你也添加了主题文件夹下的.git 文件夹的屏蔽项。那你可以考虑把第二步移走或删除的.git放回来,用作以后升级。(个人觉得这种升级方式不是很好)

获取权限

为了确保交由Github Action来持续部署时,Github Action 具备足够的权限来进行 hexo deploy 操作,需要先获取 Token

访问 Github->头像(右上角)->Settings->Developer Settings->Personal access tokens->generate new token。

注意事项:

  1. 名称自己琢磨功能随便填下就行,我这里填的是自动部署。
  2. 必须勾选 repo 项 和 workflows 项。
  3. token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。

建立流程

打开github在项目的actions下,点击new workflow,新建一个autodeploy.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: 自动部署
# 当有改动推送到main分支时,启动Action
on:
push:
branches: [ "mian" ]
#2020年10月后github新建仓库默认分支改为main,注意更改
release:
types:
- published

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: 检查分支
uses: actions/checkout@v2
with:
ref: mian

- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: "16.x"

- name: 安装 Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g

- name: 缓存 Hexo
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-

- name: 安装依赖
if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
run: |
npm install gulp-cli -g #全局安装gulp
npm install --save

- name: 生成静态文件
run: |
hexo clean
hexo generate

- name: 部署到Github
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ghp_*****************************
repository-name: CrazyStudent13/CrazyStudent13.github.io
branch: master
folder: public
commit-message: "${{ github.event.head_commit.message }} Updated By Github Actions"

这里有很多人直接按照教程走会出现有些坑,我这里稍微提一下我遇到的情况:

  1. 不要乱改命令,上述代码中checkout@v2,这个对应的是功能,不是版本。
  2. 注意本地和远端的冲突,在提交完成代码之后,可以在github远端创建自动部署脚本,不用本地新建文件夹,去产生冲突。
  3. 注意博客源码分支名称,2021年修改之后,新建的项目主分支应该是main,如果你用到的脚本中有些地方写的是master,记得改成main。
  4. 注意博客分支名称,也不要完全都改成main分支,我的博客是2019年部署的,废弃很久不用,现在又捡起来,所以分支依然还是master,最后提交的脚本,如果是提交到main,就会报错。
  5. 自己主题内的配置要提交,不然构建博客的时候,页面构造命令可能会出现跑不通的情况。
  6. 移除不需要的依赖,不然可能会造成不必要的错误,另外这样也减少下载时间。
  7. 尝试AI帮忙写脚本,目前2023年,chatgpt发展的还不够狂野,但是我试过,是可以书写这类脚本的。

调试流程

在完成上述内容之后,基本上应该是一步到位的完成。

如果要是不成,可以打开actions,一步步点进去,看到一个类似shell命令行的界面,里边会将哪个脚本报错,具体步骤的问题提示出来,按照报错排查就行。

具体操作参考安知鱼的视频讲解

结语

在2019年知道有这个,但是没怎么用过。

没想到几年不见,自动化部署流程这么好用了,看来我这几年的工作,导致我的眼界太不宽阔了。

这里也非常感谢大佬安知鱼这篇文档的指路,真的对我的自动化部署要求产生了很大的助力。

参考

使用 Github Action 自动部署 | 安知鱼 (anzhiy.cn)

hexo完成github action自动部署

Prev
2024-12-09 11:13:16
Next