记录使用 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
.
全文完.