使用 GitHub Actions 持续集成 Hexo 博客并发布

之前使用 Travis CI 实现了自动生成并发布 Hexo 博客,今天发现 GitHub 集成了类似的玩法,并且功能和扩展性都要好很多。本文简单修改了 GH Pages deploy,可以选择 repo 和 branch,并实现了对Hexo更好的兼容,解决了更新时间的问题。

准备工作

目前 GitHub Actions 仍在公测阶段,需要自行申请资格

生成一个新的 token,勾选 repo 权限,然后把 token value 存储到 GitHub repo 的 Settings/Secrets 中,命名为 REPO_TOKEN

添加 GitHub Actions 配置文件

在项目根目录添加.github/workflows/hexo.yml,按照下面的参考配置填写。

name: Hexo CI

on:
  push:
    branches:
    - master

jobs:
  generate-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master
      with:
        submodules: true

    - name: Build node
      uses: actions/setup-node@master
      with:
        node-version: 11.x

    - name: Build and Generate
      run: |
        export TZ='Asia/Shanghai'
        git ls-files -z | while read -d '' path; do
          touch -d "$(git log -1 --format="@%ct" "$path")" "$path";
        done
        npm install && npm install hexo-cli -g && hexo generate

    - name: Deploy
      uses: Editst/GitHub-Pages-deploy@master
      env:
        BUILD_DIR: public
        REPO: YOUR_GITHUB_ID/YOUR_GITHUB_ID.github.io
        TARGET_BRANCH: master
        EMAIL: email@example.com
        GH_TOKEN: ${{ secrets.REPO_TOKEN }}

上传至 GitHub

上传后 GitHub 检测到文件夹 .github/workflows 中的 .yml 文件会自动开始执行,可以到 Actions 中查看相关的输出。祝一次成功。

参考