持续集成与持续交付管线(中文译文)
原始 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.gitignorebin/generate-release-notescognee/api/v1/delete/delete.pycognee/api/v1/update/update.pycognee/api/v1/visualize/start_visualization_server.pycognee/tests/test_delete_by_id.pytools/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.toml 和 uv.lock 计算依赖哈希值。如果 GitHub 容器注册表(GHCR)中不存在具有该哈希值的镜像,则使用 Dockerfile.ci 构建一个新的镜像 .github/workflows/test_suites.yml:24-86。
依赖链
该工作流使用 needs 关键字建立执行顺序,确保仅在基础检查通过后才运行开销较大或速度较慢的测试。
| 阶段 | 任务 | 依赖项 |
|---|---|---|
| 阶段 0 | pre-test | 无 |
| 阶段 1 | basic-tests, e2e-tests, cli-tests | pre-test, build-ci-env |
| 阶段 2 | graph-db-tests, vector-db-tests, llm-tests, example-tests, notebook-tests | basic-tests, e2e-tests |
| 阶段 3 | different-os-tests | basic-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。
- GitHub 发布:使用
uv version --short创建 Git 标签,通过tools/generate_release_notes.py生成基于 AI 的发布说明,并创建 GitHub Release.github/workflows/release.yml:39-79。 - PyPI 包:使用
uv build构建分发包,并使用uv publish发布到 PyPI.github/workflows/release.yml:80-108。 - Docker 镜像:构建多平台(
amd64、arm64)镜像,并使用latest和版本标签推送到 Docker Hub.github/workflows/release.yml:110-161。 - 下游触发器:向
cognee-docs和cognee-community发送仓库调度事件.github/workflows/release.yml:162-189。 - 通知:向 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