菜单

测试和 CI/CD 流水线

相关源文件

本文档介绍了 Langflow 全面的测试基础设施和持续集成/持续部署 (CI/CD) 流水线。该系统包括使用 Playwright 进行前端测试、使用 pytest 进行后端测试、强制执行代码质量以及确保代码可靠性和可维护性的自动化工作流。

有关构建系统和包管理的信息,请参阅 构建系统和包管理。有关部署配置详情,请参阅 部署和配置

管道架构概述

CI/CD 系统围绕 GitHub Actions 工作流构建,提供全面的测试、质量保证和自动化功能。

来源: .github/workflows/typescript_test.yml .github/workflows/python_test.yml .github/workflows/lint-py.yml .github/workflows/style-check-py.yml .github/workflows/lint-js.yml

前端测试系统

前端测试系统使用 Playwright 进行端到端测试,支持智能测试套件选择和通过分片进行并行执行。

测试套件确定与执行

该系统根据更改的文件动态确定要运行的测试套件。`determine-test-suite` 作业会分析文件路径,并使用像 `--grep="@components|@api"` 这样的 grep 模式将其映射到测试类别。

来源: .github/workflows/typescript_test.yml61-241

测试分片与性能

前端测试实现了动态分片以优化执行时间

配置目的
分片大小每个分片 5 个测试最佳并行化
最大分片数40资源限制
工作进程每个分片 2 个Playwright 并发
重试3不稳定测试处理
缓存键playwright-{version}-chromium-{os}浏览器缓存

分片计算在 .github/workflows/typescript_test.yml209-241 中进行,其中 SHARD_COUNT=$(( (TEST_COUNT + 4) / 5 )) 确定了最佳分配。

来源: .github/workflows/typescript_test.yml223-229 .github/workflows/typescript_test.yml280-294

后端测试系统

Python 测试系统通过单元测试、集成测试和跨多个 Python 版本的 CLI 验证提供全面的覆盖。

测试矩阵与执行策略

单元测试通过 pytest-split 分布在 5 个并行组中:make unit_tests args="-x -vv --splits 5 --group {1-5} --reruns 5"。每个组独立运行以最大化吞吐量。

来源: .github/workflows/python_test.yml .github/workflows/python_test.yml

CLI 测试与验证

CLI 测试工作流验证完整的安装和启动过程

  1. 版本检查:将本地版本与 PyPI 版本进行比较 .github/workflows/python_test.yml100-119
  2. Wheel 构建:使用 make build main=true 创建分发包
  3. 干净安装:在新的虚拟环境中安装 wheel
  4. 服务器验证:启动服务器并验证 /api/v1/auto_login 端点
  5. 优雅关机:确保正确终止进程

来源: .github/workflows/python_test.yml120-149

代码质量和风格检查

该系统通过多个自动化检查和自动格式化工作流来强制执行代码质量。

Python 代码质量流水线

来源: .github/workflows/lint-py.yml .github/workflows/style-check-py.yml .github/workflows/py_autofix.yml

前端代码质量流水线

前端使用 Prettier 进行一致性格式化

来源: .github/workflows/lint-js.yml .github/workflows/js_autofix.yml

测试优化与性能

测试时长跟踪

该系统通过自动收集测试时长来维护测试性能指标

来源: .github/workflows/store_pytest_durations.yml .github/workflows/store_pytest_durations.yml58-72

UV 缓存管理

所有工作流都实现了 UV 缓存优化,并使用 uv cache prune --ci 来最小化存储使用,同时保持性能优势。

来源: .github/actions/setup-uv/action.yml12-16

文档测试

Docusaurus 构建验证

文档系统使用 Yarn 和 Node.js 来验证构建

来源: .github/workflows/docs_test.yml34-38 .github/workflows/fetch_docs_notion.yml36-54

自动化工作流

AI 驱动的代码优化

Codeflash 工作流为 Python 变更提供 AI 驱动的代码优化

  • 触发器:影响 src/backend/base/langflow/** 的拉取请求
  • 执行:在 src/backend/base 目录中执行 uv run codeflash
  • 集成:发生错误时继续执行,以避免阻止 PR

来源: .github/workflows/codeflash.yml14-33

依赖管理

auto-update 工作流使用 tibdex/auto-update@v2 来自动管理主分支上的依赖项更新。

来源: .github/workflows/auto-update.yml9-13

环境和秘密管理

必需的秘密

秘密目的用途
OPENAI_API_KEYLLM 测试前端和 Python 测试
ANTHROPIC_API_KEYClaude 集成测试执行
TAVILY_API_KEY搜索功能集成测试
STORE_API_KEY组件存储前端测试
ASTRA_DB_*数据库测试后端集成

环境配置

测试使用环境变量进行配置

  • LANGFLOW_DEACTIVE_TRACING="true" - 在测试中禁用跟踪
  • NODE_VERSION="21" - 标准化的 Node.js 版本
  • PYTHON_VERSION="3.13" - 默认 Python 版本
  • PLAYWRIGHT_BROWSERS_PATH="ms-playwright" - 浏览器缓存位置

来源: .github/workflows/typescript_test.yml52-58 .github/workflows/python_test.yml27-30