使用 GitHub Action 持续构建 Algolia

因为没有数据库,所以静态博客本身无法进行站内搜索,需要借助于第三方的搜索引擎来实现。Minimal Mistakes 内置 lunr (default), algolia, google 三种搜索引擎。

如果你用过本博客的搜索功能,而且足够仔细,可能会发现,我的网站所用的搜索功能是由 Algolia 驱动。

20210227154458

Algolia 的配置,在搭建博客之初就已经配置好了。当时是利用 Travis-CI 自动化提交索引,只要我进行任何文件改动,Travis-CI 都会自动提交、部署,配合 Algolia 实现站内搜索。

但是去年 Travis-CI 改变了策略,免费部署额度大大降低,加上我还在上面部署了自动签到,所以很快超出了限额,导致我的博客站内搜索 5 个多月没能更新。

好在最近 Minimal Mistakes 项目中 @dieghernan 提出用 GitHub Action 来替代 Travis-CI 的 方案。于是我按照配置教程顺利为博客配置上了 GitHub Action + Algolia 的组合方案。

在此特别感谢 @dieghernan 提供解决方案。

具体的实现方法很简单:参考 官方文档 给 Jekyll 博客配置 Algolia 后,新建 GitHub Action 运行所需文件并添加 secret 即可。

一、安装 jekyll-algolia 插件

在博客 Gemfile 文件,插件部分添加 gem 'jekyll-algolia'。示例代码如下

source "https://rubygems.org" # 插件所需要的 Ruby 环境

gem 'jekyll', '~> 3.6' # Jekyll 版本需要 3.6.0 以上

group :jekyll_plugins do
  gem 'jekyll-archives'
  gem 'jemoji'
  gem 'jekyll-algolia' # 这行是新增的,用于添加 jekyll-algolia 插件
end

之后运行 bundle install 安装依赖。如果一切正常,运行 bundle exec jekyll help 就能看到 algolia 子命令。

二、编辑 config.yml

注册 Algolia 后,在 控制面板 获取 application_idindex_namesearch_only_api_key

config.yml 文件添加以下代码。注意替换相应值。

# _config.yml

algolia:
  application_id         : Algolia_APPLICATION_ID
  index_name             : Algolia_INDEX_NAME
  search_only_api_key    : Algolia_SEARCH_ONLY_API_KEY

三、使用 Algolia

按照上面的步骤配置完后,就能运行下面的命令来进行索引(以 Windows 为例)

set ALGOLIA_API_KEY=your_admin_api_key
bundle exec jekyll algolia

若出现 Error: invalid byte sequence in GBK 错误,可先执行 chcp 65001

四、设置 GitHub Secret

到 GitHub Pages 博客项目下,在 Settings > Secrets 新增一个 Secret,名称为 ALGOLIA_API_KEY ,值为在 Algolia 控制面板 获取的 Admin API Key 。

20210227183630

五、新建 Workflow 文件

在博客项目 /.github/workflows/ 文件夹下新建一个工作流程 yml 文件,例如 algolia-search.yml,并在文件中添加如下代码

点击查看代码

添加完成后,在博客的 main 或者 master 分支有任何的提交,都会运行 GitHub Action 进行自动构建。

20210227185532

参考项目:https://github.com/marketplace/actions/algolia-jekyll-action