agentic_huge_data_base / wiki
页面 Cognee · 10.4 持续集成与持续交付管线·DeepWiki 中文全文译文

10.4 · 持续集成与持续交付管线(CI/CD Pipeline)

记忆管道与知识图谱构建 · 本章是 Cognee DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Cognee 章节10.4 状态全文译文 模块测试、发布与运维、存储与持久化、安装与启动、工作流与编排
源码线索
  • .github/actions/cognee_setup/action.yml
  • .github/docs/release.md
  • .github/workflows/basic_tests.yml
  • .github/workflows/db_examples_tests.yml
  • .github/workflows/dev_canary_release.yml
  • .github/workflows/disable_independent_workflows.sh
  • .github/workflows/e2e_tests.yml
  • .github/workflows/examples_tests.yml
  • .github/workflows/graph_db_tests.yml
  • .github/workflows/load_tests.yml
模块标签
  • 测试、发布与运维
  • 存储与持久化
  • 安装与启动
  • 工作流与编排
  • 界面与交互

中文译文

持续集成与持续交付管线(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/topoteretes/cognee/10.4-ci-cd-pipeline
翻译时间:2026-05-27T08:45:19.416Z
翻译模型:deepseek-chat
原文字符数:11696
项目:Cognee (cognee)

---

持续集成与持续交付管线

相关源文件

以下文件为本 Wiki 页面的生成提供了上下文:

  • .github/actions/cognee_setup/action.yml
  • .github/docs/release.md
  • .github/workflows/basic_tests.yml
  • .github/workflows/db_examples_tests.yml
  • .github/workflows/dev_canary_release.yml
  • .github/workflows/disable_independent_workflows.sh
  • .github/workflows/e2e_tests.yml
  • .github/workflows/examples_tests.yml
  • .github/workflows/graph_db_tests.yml
  • .github/workflows/load_tests.yml
  • .github/workflows/pre_test.yml
  • .github/workflows/relational_db_migration_tests.yml
  • .github/workflows/release.yml
  • .github/workflows/release_test.yml
  • .github/workflows/reusable_notebook.yml
  • .github/workflows/scorecard.yml
  • .github/workflows/search_db_tests.yml
  • .github/workflows/slow_e2e_tests.yml
  • .github/workflows/test_different_operating_systems.yml
  • .github/workflows/test_llms.yml
  • .github/workflows/test_s3_file_storage.yml
  • .github/workflows/test_suites.yml
  • .github/workflows/vector_db_tests.yml
  • .github/workflows/weighted_edges_tests.yml
  • .gitignore
  • bin/generate-release-notes
  • cognee/api/v1/delete/delete.py
  • cognee/api/v1/update/update.py
  • cognee/api/v1/visualize/start_visualization_server.py
  • cognee/tests/test_delete_by_id.py
  • tools/generate_release_notes.py

CI/CD 管线使用 GitHub Actions 自动化完成 Cognee 系统的测试、构建和部署。本文档涵盖了工作流编排、多环境测试执行、数据库配置以及 Docker 镜像发布。

工作流架构总览

CI/CD 系统采用分层工作流结构,由一个主编排器调用专用的可复用工作流。这种设计在管理测试套件间依赖关系的同时,支持并行执行。

工作流层级
graph TB
    subgraph "触发器"
        Push["推送到 main/dev 分支"]
        PR["拉取请求"]
        Manual["workflow_dispatch"]
    end

    subgraph "主编排器"
        TestSuites["test_suites.yml<br/>主编排器"]
    end

    subgraph "基础测试(并行)"
        BasicTests["basic_tests.yml<br/>单元测试/简单示例"]
        E2ETests["e2e_tests.yml<br/>服务器/遥测/S3"]
    end

    subgraph "数据库测试(基础测试之后)"
        GraphDBTests["graph_db_tests.yml<br/>Kuzu/Neo4j"]
        VectorDBTests["vector_db_tests.yml<br/>LanceDB/PGVector"]
        SearchDBTests["search_db_tests.yml<br/>多数据库组合"]
    end

    subgraph "集成与专项测试"
        ExampleTests["examples_tests.yml<br/>多媒体/评估/时序"]
        CLITests["cli_tests.yml<br/>CLI 命令"]
        LLMTests["test_llms.yml<br/>Gemini/Bedrock/Fastembed"]
        OSTests["test_different_os.yml<br/>Ubuntu/macOS/Windows"]
    end

    Push --> TestSuites
    PR --> TestSuites
    Manual --> TestSuites

    TestSuites --> BasicTests
    TestSuites --> E2ETests

    BasicTests --> GraphDBTests
    E2ETests --> GraphDBTests
    BasicTests --> VectorDBTests
    E2ETests --> VectorDBTests

    BasicTests --> CLITests
    BasicTests --> ExampleTests
    E2ETests --> ExampleTests

    BasicTests --> LLMTests
    E2ETests --> LLMTests

    BasicTests --> OSTests
    E2ETests --> OSTests

来源: .github/workflows/test_suites.yml:1-193, .github/workflows/basic_tests.yml:1-144

主编排工作流

test_suites.yml 工作流充当中央编排器。它通过构建专用的 Docker 镜像来建立预配置的 CI 环境,从而加速后续任务。

CI 环境构建器

build-ci-env 任务根据 pyproject.tomluv.lock 计算依赖哈希值。如果 GitHub 容器注册表(GHCR)中不存在具有该哈希值的镜像,则使用 Dockerfile.ci 构建一个新的镜像 .github/workflows/test_suites.yml:24-86

依赖链

该工作流使用 needs 关键字建立执行顺序,确保仅在基础检查通过后才运行开销较大或速度较慢的测试。

阶段任务依赖项
阶段 0pre-test
阶段 1basic-tests, e2e-tests, cli-testspre-test, build-ci-env
阶段 2graph-db-tests, vector-db-tests, llm-tests, example-tests, notebook-testsbasic-tests, e2e-tests
阶段 3different-os-testsbasic-tests, e2e-tests

来源: .github/workflows/test_suites.yml:88-193

基础测试工作流

基础测试(basic_tests.yml)

该工作流执行单元测试和简单的演示脚本,以验证核心库的完整性。

关键任务:

  • unit-tests:执行 uv run pytest cognee/tests/unit/ .github/workflows/basic_tests.yml:71-71
  • simple-examples:运行 examples/demos/simple_cognee_example.py .github/workflows/basic_tests.yml:103-103
  • simple-examples-baml:通过设置 STRUCTURED_OUTPUT_FRAMEWORK: "BAML" 专门测试 BAML 结构化输出框架 .github/workflows/basic_tests.yml:111-111

来源: .github/workflows/basic_tests.yml:41-144

端到端测试(e2e_tests.yml)

e2e_tests.yml 工作流测试完整的系统集成,包括服务器启动和外部服务交互。

关键任务:

  • run-server-start-test:通过运行 cognee/tests/test_cognee_server_start.py 验证 FastAPI 服务器 .github/workflows/e2e_tests.yml:69-69
  • run-telemetry-test:通过 cognee/tests/test_telemetry.py 检查匿名使用跟踪 .github/workflows/e2e_tests.yml:95-95
  • run-deduplication-test:使用 pgvector 服务容器测试数据去重逻辑 .github/workflows/e2e_tests.yml:128-170
  • run-s3-bucket-test:使用 AWS 凭证验证 S3 存储集成 .github/workflows/e2e_tests.yml:172-198

来源: .github/workflows/e2e_tests.yml:42-198

数据库与提供商矩阵

图数据库测试

graph_db_tests.yml 工作流验证 GraphDBInterface 的实现。它测试 kuzu(基于文件)、neo4j(使用专用的 setup_neo4j 操作)和 postgres(使用 pgvector 服务容器).github/workflows/graph_db_tests.yml:26-210。该工作流还包括对图模型中加权边的专项测试 .github/workflows/graph_db_tests.yml:59-72

来源: .github/workflows/graph_db_tests.yml:1-210, .github/workflows/weighted_edges_tests.yml:56-105

大语言模型提供商测试

test_llms.yml 工作流验证不同大语言模型和嵌入向量提供商的兼容性,包括 Gemini、Bedrock、Anthropic 和 OpenRouter .github/workflows/test_llms.yml:20-210

专用 CI 操作

Cognee 设置操作

cognee_setup 操作是一个复合操作,用于标准化环境准备。它会检测是否在预构建的 CI 容器内运行,以避免重复安装 .github/actions/cognee_setup/action.yml:22-30

graph TD
    Start["操作开始"] --> Detect["检测 CI 容器"]
    Detect -- "不在容器内" --> SetupPy["actions/setup-python"]
    SetupPy --> InstallUV["astral-sh/setup-uv"]
    InstallUV --> SyncBare["uv sync --extra api,docs,evals..."]

    Detect -- "在容器内" --> LinkProj["uv sync --frozen --inexact"]
    LinkProj --> SetEnv["设置 UV_NO_SYNC=true"]

    SyncBare --> AnonID["创建 .anon_id"]
    SetEnv --> AnonID["创建 .anon_id"]

来源: .github/actions/cognee_setup/action.yml:1-81

发布与部署

发布工作流(发布.yml)

通过 workflow_dispatch 手动触发,该工作流自动化完整的发布周期 .github/workflows/release.yml:1-4

  1. GitHub 发布:使用 uv version --short 创建 Git 标签,通过 tools/generate_release_notes.py 生成基于 AI 的发布说明,并创建 GitHub Release .github/workflows/release.yml:39-79
  2. PyPI 包:使用 uv build 构建分发包,并使用 uv publish 发布到 PyPI .github/workflows/release.yml:80-108
  3. Docker 镜像:构建多平台(amd64arm64)镜像,并使用 latest 和版本标签推送到 Docker Hub .github/workflows/release.yml:110-161
  4. 下游触发器:向 cognee-docscognee-community 发送仓库调度事件 .github/workflows/release.yml:162-189
  5. 通知:向 Discord 发送发布公告 .github/workflows/release.yml:190-207

来源: .github/workflows/release.yml:1-207

CI/CD 实体映射

下图将 CI/CD 工作流名称映射到它们验证的特定代码实体和测试脚本。

graph LR
    subgraph "CI 工作流"
        E2E["e2e_tests.yml"]
        Basic["basic_tests.yml"]
        CLI["cli_tests.yml"]
        Weighted["weighted_edges_tests.yml"]
        GraphDB["graph_db_tests.yml"]
    end

    subgraph "代码实体/测试"
        ServerTest["test_cognee_server_start.py"]
        LibTest["test_library.py"]
        CLIRunner["test_cli_runner.py"]
        WeightedEdges["test_weighted_edges.py"]
        GetGraph["get_graph_from_model.py"]
        KuzuTest["test_kuzu.py"]
    end

    E2E --> ServerTest
    Basic --> LibTest
    CLI --> CLIRunner
    Weighted --> WeightedEdges
    Weighted --> GetGraph
    GraphDB --> KuzuTest

来源: .github/workflows/e2e_tests.yml:69, .github/workflows/basic_tests.yml:71, .github/workflows/cli_tests.yml:74, .github/workflows/weighted_edges_tests.yml:7-9, .github/workflows/graph_db_tests.yml:57

CI 管线数据流

下图展示了数据(环境变量和密钥)如何从 GitHub Actions 流入 Cognee 测试执行环境。

sequenceDiagram
    participant GHA as GitHub Actions 运行器
    participant CS as cognee_setup(操作)
    participant UV as uv(包管理器)
    participant PY as Python 测试脚本

    GHA->>CS: 传递输入(python-version, extras)
    CS->>UV: uv sync --extra [extras]
    GHA->>PY: 设置环境变量(LLM_API_KEY, DB_HOST)
    Note over PY: 脚本读取 os.environ
    PY->>PY: 运行 pytest/python 脚本
    PY-->>GHA: 返回退出码

来源: .github/actions/cognee_setup/action.yml:51-62, .github/workflows/e2e_tests.yml:58-69, .github/workflows/test_different_operating_systems.yml:67-80