用 GitHub Actions 自动更新 Algolia 搜索索引
编辑大家好!今天我来分享一下如何用 GitHub Actions 自动更新 Algolia 的搜索索引。如果你有一个博客,并且用 Algolia 来实现搜索功能,可能会遇到一个问题:每次更新博客内容后,手动上传搜索记录数据真的很麻烦。于是,我决定研究一下 Algolia 的 API 和 GitHub Actions,最终实现了自动上传搜索记录的功能。下面就来详细说说这个过程。
GitHub Actions 是什么?
GitHub Actions 是一个超级好用的工具,可以帮你自动化很多工作。比如,你可以用它来自动测试代码、自动部署网站,甚至像我们这里要做的——自动更新 Algolia 的搜索索引。你可以在 GitHub 上找到很多现成的 Actions,也可以自己写一个适合你需求的工作流程。
生成搜索数据
数据格式
首先,我们需要准备好要上传的搜索数据。数据格式大概是这样的:
{
"content": "这是一段博客内容",
"lvl0": "博客分类",
"lvl1": ["标签1", "标签2"],
"lvl2": "摘要",
"tags": ["标签1", "标签2", "标签3"],
"url": "https://你的博客地址",
"objectID": "唯一ID"
}
这个格式是 Algolia 要求的,你可以根据自己的博客内容来调整。比如,content
是博客的正文,lvl0
是分类,tags
是标签,url
是博客的链接,objectID
是每条记录的唯一标识。
设置 Secrets
为了让 GitHub Actions 能够访问 Algolia,我们需要在 GitHub 上设置一些敏感信息。这些信息包括 Algolia 的应用 ID、管理 API Key 等。千万别把这些信息直接写在代码里,不安全!
怎么设置?
- 打开你的 GitHub 仓库。
- 点击
Settings
,然后选择Secrets
。 - 点击
New repository secret
,添加以下信息:
- APPLICATION_ID:Algolia 的应用 ID。
- ADMIN_API_KEY:Algolia 的管理 API Key(这个要保密,不能泄露)。
- INDEX_NAME:Algolia 的索引名称。
- FILE_PATH:搜索数据文件的路径(比如
algolia.json
)。
新建 GitHub Actions 工作流程
接下来,我们要在 GitHub 上创建一个新的工作流程,用来实现自动上传搜索记录的功能。
步骤:
- 在你的项目根目录下,创建一个新文件夹:
.github/workflows
。 - 在这个文件夹里,新建一个 YAML 文件,比如
main.yml
。 - 在
main.yml
文件中,写入以下内容:
name: Algolia Upload Records
on:
[push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Upload Records
uses: getyufelix/Algolia-Upload-Records@main
env:
APPLICATION_ID: ${{secrets.APPLICATION_ID}}
ADMIN_API_KEY: ${{secrets.ADMIN_API_KEY}}
INDEX_NAME: ${{secrets.INDEX_NAME}}
FILE_PATH: ${{secrets.FILE_PATH}}
解释一下:
- name:这个工作流程的名字,随便取一个就行。
- on:触发条件,这里设置为
push
,意思是每次你推送代码到 GitHub 时,这个工作流程就会自动运行。 - jobs:定义具体的工作任务。我们这里只有一个任务,叫做
build
。 - runs-on:指定运行环境,这里用的是
ubuntu-latest
,也就是最新的 Ubuntu 系统。 - steps:具体的工作步骤。第一步是
Checkout
,用来拉取代码;第二步是Upload Records
,用来上传搜索记录到 Algolia。
执行过程和结果
当你推送代码到 GitHub 后,GitHub Actions 会自动运行这个工作流程。你可以在 Actions
选项卡里查看工作流程的执行情况。
如果一切顺利,你会看到上传成功的提示,并且返回一些数据记录的 ID。这样,你的 Algolia 搜索索引就自动更新了,再也不用手动上传了!
总结
通过 GitHub Actions,我们可以轻松实现 Algolia 搜索索引的自动更新。整个过程其实并不复杂,只需要准备好数据、设置好 Secrets,然后写一个简单的工作流程就可以了。希望这篇文章对你有帮助!如果你有任何问题,欢迎留言讨论。
本文参考了 ichochy's blog,感谢原作者的分享!
- 0
- 0
-
分享