Skip to content

测试策略与 CI/CD

相关源文件

以下文件被用作生成此维基页面的上下文:

eCapture 项目采用多层测试策略,以确保基于 eBPF 的捕获功能在不同 Linux 内核和架构上的可靠性。该策略涵盖了从针对用户态逻辑的本地 Go 单元测试,到在真实硬件/虚拟化内核上运行并集成到健壮的 GitHub Actions CI/CD 流水线中的端到端(E2E)测试。

1. 测试层级

1.1 Go 单元测试

单元测试侧重于用户态控制平面和事件处理逻辑。这些测试不需要 root 权限或 eBPF 能力,因为它们使用模拟数据或记录的事件流。

1.2 端到端 (E2E) 测试

E2E 测试是 eCapture 验证的核心。它们在真实的 Linux 环境中运行,并针对目标应用程序执行实际捕获。

1.3 安全与质量扫描

2. CI/CD 架构

CI/CD 系统构建在 GitHub Actions 之上,实现了针对多种架构(x86_64 和 arm64)的构建、测试和发布循环的自动化。

构建与测试流水线数据流

此图展示了从 Pull Request 到经过验证的构建产物的流程。

图表:PR 验证与 E2E 流水线

Sources: .github/workflows/e2e.yml:1-22, .github/workflows/pr_build_debug.yml:1-22, .github/workflows/codeql-analysis.yml:12-35

多架构构建策略

eCapture 使用矩阵策略为不同 CPU 架构的 Linux 和 Android 进行构建。

目标操作系统架构工具链产物类型
Linuxamd64Clang-14 / GCC二进制 / RPM / DEB
Linuxarm64aarch64-linux-gnu-gcc二进制 / RPM / DEB
Androidarm64Android NDK二进制

Sources: .github/workflows/pr_build_debug.yml:19-22, .github/workflows/pr_build_debug.yml:33-60

3. 实现细节

3.1 E2E 测试框架

E2E 测试通过 Bash 脚本进行编排,这些脚本管理 eCapture 进程和目标客户端的生命周期。

3.2 自动化发布流水线

当推送标签(tag)时,会调用 builder/Makefile.release 来创建生产就绪的二进制文件。

  1. 环境准备:安装 llvmclanglinux-source .github/workflows/pr_build_debug.yml:33-47
  2. 编译:运行 make release,同时编译 CO-RE 和 non-CO-RE 版本 .github/workflows/pr_build_debug.yml:67-75
  3. 打包:将二进制文件打包成 .tar.gz 并生成校验和。

图表:事件处理器单元测试数据流

Sources: pkg/event_processor/processor_test.go:44-77, pkg/event_processor/base_event.go:76-87

4. 关键测试文件

文件路径用途
.github/workflows/e2e.yml用于 E2E 测试的主要 GitHub Actions 工作流。
test/e2e/common.sh用于基于 shell 的 E2E 测试的实用函数。
pkg/event_processor/processor_test.go用户态事件流水线的单元测试。
.github/workflows/pr_build_debug.yml用于 PR 的跨平台构建验证。
test/e2e/tls_text_advanced_test.sh高级场景测试(HTTP/2, PID/UID 过滤)。

Sources: .github/workflows/e2e.yml:1-22, test/e2e/common.sh:1-12, pkg/event_processor/processor_test.go:1-30, test/e2e/tls_text_advanced_test.sh:1-15

测试策略与 CI/CD has loaded