持续集成与持续交付管线
持续集成与持续交付管线
相关源文件
以下文件为本 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 系统采用分层工作流结构,由一个主编排器调用专用的可复用工作流。这种设计在管理测试套件间依赖关系的同时,支持并行执行。
工作流层级
来源: .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。
来源: .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 工作流名称映射到它们验证的特定代码实体和测试脚本。
来源: .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 测试执行环境。
来源: .github/actions/cognee_setup/action.yml:51-62, .github/workflows/e2e_tests.yml:58-69, .github/workflows/test_different_operating_systems.yml:67-80