目录

Hugo 博客使用 LoveIt 主题


记录使用 Hugo 搭建博客和配置 LoveIt 主题的过程, 利用 GitHub Action 实现自动部署.

警告
使用 loveit 主题, 除了要 new site 以外, 还要初始化为 git 仓库, 不然本地构建不了站点.


初始化和管理主题

1
2
3
4
hugo new site BLOG
cd  BLOG
git init
git submodule add https://github.com/dillonzq/LoveIt themes/LoveIt

然后把 examplesite 的文件放到博客目录下, 注意有一篇示例文章的 shortcode 引用了  twitter 和  Instagram 的格式, 在强国的网络环境下网站生成会失败, 要删除 post.

如果下载很慢可以考虑设置代理🏄‍♂️或者转换链接🔗.

1
2
3
4
5
6
7
git config --global http.proxy 'socks5://127.0.0.1:1080'

git config --global https.proxy 'socks5://127.0.0.1:1080'

git config --global --unset http.proxy

git config --global --unset https.proxy

配置一下博客的 config 文件, 注意 themesDir = "themes" 不要添加斜杠 /, 否则在下一步利用 GitHub Action自动部署会报找不到主题的错误.


GitHub Pages

然后添加 GitHub Pages 仓库: blog 分支管理源码, master 中为 public 文件夹.

1
2
3
4
5
6
7
git remote add origin https://github.com/Lucas-0/Lucas-0.github.io.git
# 新建 branch 分支, 也可以使用 checkout
git branch -b blog

git add .
git commit -m "init"
git push origin blog

到这一步, 已经完成了推送的步骤.


GitHub Action

在博客根目录新建 .github/workflows/main.yml 文件, 这是 GitHub Action 读取执行的文件夹, 其中 main.yml 文件名字可以任取.

内容:

 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
name: GitHub Page Deploy

on:
  push:
    branches:
      - blog
jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
      - name: Checkout master
        uses: actions/checkout@v1      
        with:
          submodules: true
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: latest
          extended: true

      - name: Build Hugo
        run: |
                    hugo

      - name: Deploy Hugo to gh-pages
        uses: peaceiris/actions-gh-pages@v2
        env:
          ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
          PUBLISH_BRANCH: master
          PUBLISH_DIR: ./public

在仓库新建 Secrets, 名称自定, 可以和上面给定的模板一样叫做 ACTIONS_DEPLOY_KEY, 将 SSH 私钥复制进去.这样 workflow 就有权限对 master 分支进行写操作.

例如某一次 push 的过程:

1
2
3
git add .
git commit -m "message"
git push origin blog

然后 workflow 会自动生成 public 文件夹 push 到 master 分支.

配置 Algolia

hugo 使用 aligolia 搜索需要安装 atomic-algolia 生成 index.json, 然后上传到 Algolia, 过于麻烦, 而且我不想在 PC 上装 npm, 所以这部分的工作也交给 Github Action 完成 .

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
      - name: Update Algolia Index
        env:
          ALGOLIA_APP_ID: Your_APP_ID
          ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
          ALGOLIA_INDEX_NAME: Your_INDEX_NAME
          ALGOLIA_INDEX_FILE: public/index.json
        run: |
          sudo apt-get -yqq install npm
          sudo npm install atomic-algolia -g
          atomic-algolia          

使用时到 Algolia 获取对应的 ID 和 key, 然后新建密钥 ALGOLIA_ADMIN_KEY.

全文完.