此前经常遇到一个问题,每次写完博客,需要使用繁杂的命令去部署博客,这大大降低了写作动力,看到很多博主都在使用GitHub Actions来自动部署,我也去学习了一番。

在本篇博客中,我将引导你通过 GitHub Actions 自动部署你的 Hexo 博客到 GitHub Pages。这个过程不仅能节省你的时间,还能让你的部署过程更加自动化和高效。我们将从创建一个 GitHub Actions 工作流程开始,逐步讲解每一个步骤的作用和配置方法。

前言

GitHub Actions 是一个强大的自动化工具,它允许你在 GitHub 仓库中自动执行软件开发工作流程。通过使用 GitHub Actions,你可以自动化你的构建、测试和部署任务,使得软件开发过程更加流畅。

创建 GitHub Actions 工作流程

  1. 创建工作流程文件

    在你的 Hexo 博客仓库中,创建一个 .github/workflows 目录(如果还没有的话),然后在该目录下创建一个新的 YAML 文件,例如 deploy.yml。这个文件将包含你的 GitHub Actions 工作流程配置。

  2. 配置工作流程触发条件

    yaml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    name: 自动部署

    on:
    push:
    branches:
    - master
    release:
    types:
    - published

    这段配置定义了工作流程的名称和触发条件。当你向 master 分支推送代码或发布新的 release 时,这个工作流程将会被触发。

  3. 配置部署任务

    jobs 部分,我们定义了实际执行的任务,包括环境设置、安装依赖、生成静态文件和部署到 GitHub Pages。

    yaml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 检查分支
    uses: actions/checkout@v2
    with:
    ref: master
    fetch-depth: 0
    - name: Sync local file timestamps
    run: |
    git ls-files -z | while read -d '' path; do touch -d $(git log -1 --format="@%ct" "$path") "$path"; done
    ...

    这里详细列出了每个步骤的作用,从检查分支到部署到 GitHub,每一步都是自动化完成的。

  4. 安装 Node.js 和 Hexo

    使用 actions/setup-node@v1 来安装 Node.js,并设置 Node.js 版本为 “16.x”。之后安装 Hexo CLI 并配置时区。

    yaml
    1
    2
    3
    4
    5
    6
    7
    8
    - name: 安装 Node
    uses: actions/setup-node@v1
    with:
    node-version: "16.x"
    - name: 安装 Hexo
    run: |
    export TZ='Asia/Shanghai'
    npm install hexo-cli --save
  5. 缓存依赖项

    使用 actions/cache@v3 来缓存 node_modules 目录,以加速后续的构建过程。

    yaml
    1
    2
    3
    4
    - name: 缓存 Hexo
    id: cache-npm
    uses: actions/cache@v3
    ...
  6. 生成静态文件并部署

    最后,通过运行 Hexo 的 cleangenerate 命令来生成静态文件,并使用自定义脚本将静态文件推送到 GitHub Pages。

    yaml
    1
    2
    3
    4
    5
    6
    - name: 生成静态文件
    run: |
    hexo clean
    hexo generate
    gulp
    ...

结语

通过上述步骤,你可以将 Hexo 博客的部署过程完全自动化。这样,每当你更新博客内容并推送到 master 分支时,GitHub Actions 会自动为你构建并部署最新的博客到 GitHub Pages,让你的博客保持最新状态,而无需手动干预。

希望这篇教程能帮助你更有效地管理和部署你的 Hexo 博客。如果你有任何问题或想分享你的自动化部署经验,请在评论区留言。