今天我们来聊点酷的——如何让你的 Hexo 博客“自动化”部署!

相当于给静态博客添加了后台,非常nice!任何设备无需环境发博文!

如果你是 Hexo 老用户,肯定没少经历过手动发布博客的“折磨”:写完文章,本地 hexo generate,再 hexo deploy,等等等… 小毛病可能不断,效率嘛,嗯,还有很大的提升空间!

利用强大的 Qexo (免费跑在 Vercel 上面啦!) + GitHub Actions,彻底解放你的双手。

🤖 告别手动档,拥抱自动化:Qexo + Git + GitHub Actions 三驾马车!

你的 Hexo 博客既然已经在 GitHub Pages 上面运行得好好的,那我们就是给它升级一个自动化后台,而不是另起炉灶哦!

这个自动化的核心思想,其实就藏在这“三驾马车”里:

  1. Qexo (在 Vercel): 它作为你的博客内容管理系统(CMS),负责接收你编辑、撰写的内容,并神奇地将其转换为 Hexo 的 .md 源文件,然后自动同步推送到你的 Git 仓库。

    Vercel部署教程:点击直达

    个人推荐Vercel+[aiven免费数据库

  2. 你的 GitHub 博客仓库: 它是 Hexo 源文件的“家”,也是所有变动的监测站。当 Qexo 推送新内容进来时,GitHub 会立即“察觉”。

  3. GitHub Actions: 这是真正的幕后英雄!它会“订阅”你的 Git 仓库变化。一旦有新的推送到特定的分支,它就会自动启动一个预设的流程:拉取最新源码 → 安装 Hexo 依赖 → 构建静态文件 → 将构建好的文件推送到 GitHub Pages 的部署分支。

搞懂这层关系,下面的操作就非常清晰了!

📚 开始之前,你需要准备点什么?

  • 一个运行良好、已经部署到 GitHub Pages 的 Hexo 博客

    最明显的特征就是有index.html,一般是**你的用户名.github.io**作为仓库名

    有各种配置文件如_config.yaml和_config.butterfly.yaml

    这两个仓库一定要分清!

  • 你已经在 Vercel 上搭建好的 Qexo 实例(假设你已经能正常访问 Qexo 后台了)。

  • 一个 GitHub 账号,以及你的 Hexo 博客仓库的访问权限。


第一步:让 Qexo 连接你的 Hexo 博客仓库 (让它能“读写”你的博客源文件)

既然 Qexo 是我们的“笔”,那它得能把写好的字同步到我们的博客源码仓库里去吧!

  1. 登录你的 Qexo 后台: 进入你通过 Vercel 部署的 Qexo 实例后台管理界面。

  2. 配置 Git 连接:

    • 在 Qexo 后台,找到类似 “站点设置”、”Git配置”、”储存配置” 或者 “同步” 这样的选项(具体名称可能因 Qexo 版本略有差异)。
    • 选择你的 Git 服务商(通常是 GitHub)。
    • 非常重要:授权 Qexo 访问你的 GitHub 账号,或者提供一个 GitHub Personal Access Token (PAT)。 请确保你提供的 PAT 具有对你博客源码仓库的 读写权限 (repo 作用域),这是 Qexo 能自动提交内容的必要条件。
    • 输入你的博客源码仓库地址。 比如 你的GitHub用户名/你的仓库名
    • 指定 Hexo 源文件所在的路径和分支。
      • 源文件路径: 大多数 Hexo 项目,其源文件 (_posts, source, _config.yml 等) 都位于仓库的根目录,所以这里填 / 即可。如果你把 Hexo 放在子目录,那就填写相应的子目录路径。
      • 源文件分支: 这是指你的 Hexo 源码 存放的分支,通常是 mainmaster 分支(取决于你的仓库默认主分支设置)。记住,这和你 GitHub Pages 最终发布的分支(如 gh-pages)是两码事哦!
  3. 测试连接: 配置完成后,在 Qexo 后台尝试新建或修改一篇测试文章,然后点击保存。去你的 GitHub 博客仓库里看看,是不是有新的 Markdown 文件生成了?或者你的文章内容是不是被更新了?如果一切顺利,恭喜你,Qexo 已经能帮你管理博客源码了!


第二步:设置 GitHub Actions (部署自动化的核心魔法!)

现在,Qexo 能把修改提交到你的 Git 仓库了。那接下来,当有新的提交时,谁来完成 Hexo 的生成和部署呢?没错,就是 GitHub Actions!

  1. 打开你的 Hexo 博客源码仓库。
  2. 获取以下参数
参数名 是否必须
GITHUBUSERNAME 你的github用户名
GITHUBTOKEN https://github.com/settings/tokens,在此获取,创建的Token名称随意,但必须勾选repo项和workflows项
GITHUBEMAIL 你的github邮箱

将这三个键值对填写在你的博客源码仓库的:setting->Secrets and variables->Actions
-> Repository secrets

  1. 创建或编辑 .github/workflows/deploy.yml 文件:
  • 在你的博客源码仓库页面,点击 “Actions” 标签页。
  • 如果没有 .github/workflows 文件夹,GitHub 会引导你创建一个。你可以点击 “New workflow” 或者 “set up a workflow yourself”。
  • 创建一个名为 deploy.yml 的文件,路径是 .github/workflows/deploy.yml
  1. 粘贴并修改以下 GitHub Actions 配置:

    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
    # 脚本1,
    # 当有改动推送到master分支时,启动Action
    name: 自动部署

    on:
    push:
    branches:
    - master #2020年10月后github新建仓库默认分支改为main,注意更改

    release:
    types:
    - published

    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 检查分支
    uses: actions/checkout@v2
    with:
    ref: master #2020年10月后github新建仓库默认分支改为main,注意更改

    - name: 安装 Node
    uses: actions/setup-node@v1
    with:
    node-version: "20.17.0" #action使用的node版本,建议大版本和本地保持一致。可以在本地用node -v查询版本号。

    - name: 安装 Hexo
    run: |
    export TZ='Asia/Shanghai'
    npm install hexo-cli -g
    - name: 缓存 Hexo
    uses: actions/cache@v3
    id: cache
    with:
    path: node_modules
    key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

    - name: 安装依赖
    if: steps.cache.outputs.cache-hit != 'true'
    run: |
    npm install --save
    - name: 生成静态文件
    run: |
    hexo clean
    hexo generate
    hexo algolia #这里可以添加其他的插件命令
    - name: 部署 #此处master:master 指从本地的master分支提交到远程仓库的master分支,若远程仓库没有对应分支则新建一个。如有其他需要,可以根据自己的需求更改。
    run: |
    cd ./public
    git init
    git config --global user.name '${{ secrets.GITHUBUSERNAME }}'
    git config --global user.email '${{ secrets.GITHUBEMAIL }}'
    git add .
    git commit -m "博客更新${{ github.event.head_commit.message }} $(date +"%Z %Y-%m-%d %A %H:%M:%S") Updated By Github Actions"
    git push --force --quiet "https://${{ secrets.GITHUBUSERNAME }}:${{ secrets.GITHUBTOKEN }}@github.com/${{ secrets.GITHUBUSERNAME }}/${{ secrets.GITHUBUSERNAME }}.github.io.git" master:pages
  2. 保存你的 deploy.yml 文件。 GitHub 会提示你提交这个新的 workflow 文件。提交之后,Actions 的配置就生效了!

第三步:测试自动化部署 (见证魔法!)

最激动人心的时刻到了!现在我们来验证一下,看自动化部署是否真的生效了!

  1. 登录你的 Qexo 后台。
  2. 做点什么修改: 随便改一篇文章的标题、内容,或者直接新建一篇文章。
  3. 点击保存/发布。 Qexo 会把你的更改推送到你的 Git 仓库的源文件分支。
  4. 前往你的 GitHub博客源码仓库:
    • 点击 “Actions” 标签页。
    • 你会看到一个新的工作流(名字就是你 deploy.yml 文件里 name: 设置的那个)正在运行中。通常会显示一个黄色小点或沙漏图标。
    • 点击进入这个工作流,你可以实时查看每个步骤的执行日志,看看有没有报错,或者进行到哪一步了。
  5. 等待成功: 如果一切配置正确,整个流程大概几分钟(取决于你博客文章数量和服务器资源)就会运行完毕,显示绿色对勾。
  6. 访问你的 GitHub Pages 博客地址: 刷新你的博客,看看刚刚修改或新建的文章是不是已经妥妥地出现在博客上了!

🎉🎉 如果你的文章神奇般地更新了,恭喜你!你已经成功搭建了一套 Qexo + GitHub Actions 的 Hexo 自动化部署体系!从此以后,你只需在 Qexo 后台写作和管理,剩下的部署工作都交给 GitHub Actions 去完成吧!

🔍 遇到问题?这里有几个小贴士:

  • 分支傻傻分不清楚?

    • Hexo 源文件分支 (mainmaster): Qexo 推送的地方,也是 GitHub Actions 第一次 checkout 的地方。这个分支只存放你的 Markdown 文件、主题、_config.yml源代码
    • GitHub Pages 部署分支 (gh-pagesmain): 这是 hexo generate 后,生成 HTML、CSS、JS 等静态文件后要推送过去的分支。
      • 如果你的仓库是 <username>.github.io 这种形式,通常你的静态文件会直接推送到 main (或 master) 分支。
      • 如果是其他普通的仓库名,GitHub Pages 会默认从 gh-pages 分支读取。
    • 请务必在 deploy.yml 中参数中正确设置!
  • GitHub Token 权限?

    • GITHUB_TOKEN 是 GitHub Actions 运行时自动生成的、具有当前仓库读写权限的令牌,大多数情况下,你无需单独创建或配置 PAT 给 Actions。只要你的 Qexo PAT 权限设置正确就行。
  • Node.js 版本?

    • 确保 node-version (actions/setup-node@v4 那一步) 设置为你 Hexo 版本兼容的 Node.js 版本。如果不确定,尝试 1820 这样的最新LTS版本。

现在,你可以拍拍大腿,告别那个总在命令行敲 hexo d 的自己了!享受 Qexo 带来的丝滑编辑体验,感受 GitHub Actions 带来的部署自由吧!