摘要

使用 GitHub Actions 构建 Hugo 博客,并自动发布到 GitHub Pages。

关键词

Hugo、GitHub Actions、GitHub Pages、自动部署

GitHub Actions 提供持续集成与持续部署(CI/CD)能力,帮助自动化软件工作流。 可以直接在 GitHub 上构建、测试、部署代码,并按照团队需要管理代码评审、分支 和问题分类。

我使用 GitHub Actions,将站点源文件 (例如 hugoBlog source) 自动部署 到 GitHub Pages,例如 liugangjian.github.io

博客项目架构如下图,共涉及三个仓库:

  • liugangjian.github.io公开仓库,保存构建后的输出文件。
  • hugoBlog Source私有仓库,保存网站源代码。
  • draw.io公开仓库,保存文章所用图片。

hugoBlog Source 目录下创建 .github/workflows/deploy.yml 文件。 向 hugoBlog 仓库推送代码时,GitHub Actions 会帮助构建并部署到 liugangjian.github.io

 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
# This is a basic workflow to help you get started with Actions

name: hugo-deploy-CI

# Controls when the action will run. 
on: push

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # docs:https://github.com/peaceiris/actions-gh-pages
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - name: Git checkout
        uses: actions/checkout@v2
      - name: Setup hugo 
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.81.0'
          extended: true

      - name: Build
        run: hugo
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          personal_token: ${{ secrets.PERSONAL_TOKEN }}
          external_repository: liugangjian/liugangjian.github.io
          publish_dir: ./public
          keep_files: true
          publish_branch: master