# 前言
一直想给
Hexo
博客找个在线管理面板,能够满足在线修改和发布文章的功能,这样就可以在多台不同电脑上进行写作。
刚好在 B 站上看到有人用Qexo
对Hexo
博客进行管理,想试试好不好用。
# 前置条件
- 完成 Qexo 的相关安装和部署,具体安装和部署可以看部署程序
- 一个已经通过 Github Pages 部署好的个人博客仓库(仓库名称是:username/username.github.io 的形式)
- 将 Hexo 博客源码整体作为一个
git仓库
上传到Github
,例如叫做hexo-shoka
流程图
# 使用 Github Action
创建 Github Token
在Github
的用户页面左侧边栏找到Developer settings
,点击后找到Personal access tokens
,选择两种Token
类型的其中一种进行创建,要求创建的Token
至少对相关仓库
具有读写权限
。(之后的工作流中要用到,请确保权限足够)创建示例
例如:我选择创建
Personal access tokens (classic)
类型的Token
,点击Gernerate new token
按钮,选择Generate new token (classic)
选项。进入页面后,Note
选项框中填入待创建Token
的名称,比如HEXO_AUTO_REDEPLOY
。Expiration
用于设定待创建Token
的过期时间,比如选择No Expiration
(一般不推荐这样)。Scope
用于设置Token
的相关权限,比如勾选repo
和workflow
。最后在底部点击Gernerate token
按钮完成当前Token
的创建。创建 Repository secret
在Hexo博客源码仓库
点击Settings
,在左侧栏找到Secrets and variables
,选择Actions
,进入Actions secrets and variables
页面,点击New repository secret
创建一个仓库 secret,名称随意,例如TARGET_REPO_TOKEN
,值为刚才生成的Token
。同样的方式再创建一个仓库 secret,名称随意,例如TARGET_REPO_NAME
, 值以username/username.github.io
形式填入自己的 Hexo 博客部署仓库的名称创建工作流文件
在存储 Hexo 博客源码的仓库 (hexo-shoka
) 中创建.github/workflows/
文件夹路径,并在其下面创建一个yaml
格式的文件,名称随意,例如叫pages.yml
编写工作流步骤
在pages.yml
文件中写入如下内容:
name: Deploy Hexo Blog | |
# Github Action 触发条件 | |
on: | |
push: | |
branches: | |
- main # 这里设置的是当前仓库的 main 分支发生 push 时触发 | |
# 作业设置 | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest # 设置运行的宿主机系统 | |
steps: | |
# 检出当前仓库(存放 Hexo 博客源码的仓库) | |
- name: Checkout source code | |
uses: actions/checkout@v2 | |
with: | |
# 如果你的主题文件夹使用的是 git submodule 进行管理的话这个操作是必须的 | |
# 不然检出当前仓库后,themes/your_theme/ 文件下内容是空的 | |
submodules: 'recursive' | |
# git config 设置 | |
- name: Configure Git | |
env: # 如果不想通过环境变量来设置,也可以抽取成 Repository secret | |
USERNAME: unistart # 改成自己的 | |
USER_EMAIL: 2604249649@qq.com # 改成自己的 | |
run: | | |
git config --global user.email $USER_EMAIL | |
git config --global user.name $USERNAME | |
# 配置 Node.js 环境 | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '18.x' # 可以根据自己的需要修改 Node.js 版本 | |
# 安装 npm 依赖 | |
- name: Install dependencies | |
run: | | |
npm install hexo-cli -g | |
npm install | |
# 执行 hexo 命令并推送新生成的内容到指定的目标仓库(存放 Hexo 博客静态页面的仓库) | |
# 下面使用 git 进行远程推送时,可以根据自己的需要修改推送分支的名称 | |
# 下面的操作是进行 CURRENT_REPO_NAME:main -> TARGET_REPO_NAME:main | |
- name: Build and deploy | |
env: # 注意去掉插值表达式中多余的 '\' 符号,因为 markdown 渲染的关系目前只能这样写了 | |
TARGET_REPO_TOKEN: $\{\{ secrets.TARGET_REPO_TOKEN \}\} | |
TARGET_REPO_NAME: $\{\{ secrets.TARGET_REPO_NAME \}\} | |
run: | | |
hexo clean | |
hexo generate | |
cd public | |
git init | |
git remote add origin "https://$TARGET_REPO_TOKEN@github.com/$TARGET_REPO_NAME" | |
git checkout -b main | |
git add . | |
git commit -m "Redeploy Hexo Blog" | |
git push origin main --force |
- 在当前仓库(
hexo-shoka
)提交编写好的工作流,等待 Github Action 完成