# 前言

一直想给 Hexo 博客找个在线管理面板,能够满足在线修改和发布文章的功能,这样就可以在多台不同电脑上进行写作。
刚好在 B 站上看到有人用 QexoHexo 博客进行管理,想试试好不好用。

# 前置条件

  1. 完成 Qexo 的相关安装和部署,具体安装和部署可以看部署程序
  2. 一个已经通过 Github Pages 部署好的个人博客仓库(仓库名称是:username/username.github.io 的形式)
  3. 将 Hexo 博客源码整体作为一个 git仓库 上传到 Github ,例如叫做 hexo-shoka
流程图

Qexo发布博客整个流程

# 使用 Github Action

  1. 创建 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_REDEPLOYExpiration 用于设定待创建 Token 的过期时间,比如选择 No Expiration (一般不推荐这样)。 Scope 用于设置 Token 的相关权限,比如勾选 repoworkflow 。最后在底部点击 Gernerate token 按钮完成当前 Token 的创建。

    创建好的HEXO_AUTO_REDEPLOY

  2. 创建 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 博客部署仓库的名称

  3. 创建工作流文件
    在存储 Hexo 博客源码的仓库 ( hexo-shoka ) 中创建 .github/workflows/ 文件夹路径,并在其下面创建一个 yaml 格式的文件,名称随意,例如叫 pages.yml

  4. 编写工作流步骤
    pages.yml 文件中写入如下内容:

.github/workflows/page.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
  1. 在当前仓库( hexo-shoka )提交编写好的工作流,等待 Github Action 完成
更新于 阅读次数