# 在 GitHub Action 中运行 Typesense 端到端测试
使用 Typesense 时,您可能希望运行端到端测试(end-to-end tests)——这些测试是针对应用程序依赖项的真实实例运行的,而不是模拟对象。
针对实际的 Typesense 实例运行测试可以增强对代码以及与 Typesense 之间契约关系的信心。将 Typesense 添加到 GitHub Action 中非常简单。
有两种可选方案:
# 方案一:使用预构建的 Action
Typesense 社区成员构建了一个现成的 GitHub Action。您可以在 GitHub 市场 jirevwe/typesense-github-action (opens new window) 中找到并安装它。
您可以在工作流 YAML 文件中配置 Typesense 服务器。根据需求,您可以配置它在不同端口运行,或者针对多个 Typesense 版本运行测试矩阵。
以下是使用 jirevwe/typesense-github-action (opens new window) 包将 Typesense 添加到 GitHub Actions 的示例配置:
name: Run tests
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
typesense-version: [0.22.0, 0.23.1]
steps:
- name: Start Typesense
uses: jirevwe/typesense-github-action@v1.0.1
with:
typesense-version: ${{ matrix.typesense-version }}
typesense-port: 20863
- name: Curl Typesense
run: sleep 10 && curl http://localhost:8108/health
此工作流设置会针对 typesense-version
列表中指定的每个 Typesense 版本运行操作步骤。这使您能够针对多个 Typesense 版本运行测试。一个典型的使用场景是:当您想确保更新自托管或云端的 Typesense 版本不会破坏应用程序功能时。
这里有一个完整的工作示例 here (opens new window)。
# 方案二:无依赖方式
如果您希望采用更直接的方式而不引入额外依赖,请将以下内容添加到您的 GitHub Actions 配置文件中:
name: Run tests
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
# 版本号使用引号包裹以确保精确版本
# 特别是右侧包含"0"的数字(例如 26.0)
typesense-version: ['0.25.2', '26.0']
typesense-port: ['8108:8108']
services:
typesense:
image: typesense/typesense:${{ matrix.typesense-version }}
steps:
- name: 启动 Typesense
run: |
docker run -d \
-p ${{ matrix.typesense-port }} \
--name typesense \
-v /tmp/typesense:/data \
typesense/typesense:${{ matrix.typesense-version}} \
--api-key=xyz \
--data-dir /data \
--enable-cors
- name: 测试 Typesense
run: sleep 1 && curl http://localhost:8108/health
完整示例文件可参考:jaeyson/ex_typesense (opens new window)。
这样就完成了!