# 在 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)

这样就完成了!