本页面提供了有关如何从源代码构建etcd及其运行测试套件的全面指南。这些说明对于希望为etcd做出贡献或测试代码库修改的开发人员至关重要。有关发布过程的信息,请参阅发布流程,有关CI/CD管道的详细信息,请参阅CI/CD管道。
在构建etcd之前,请确保您已安装
.go-version文件中指定的版本etcd使用基于Makefile的构建系统,提供了各种目标以满足不同的构建场景。
要构建etcd二进制文件,请运行
此命令会在bin/目录中构建etcd二进制文件。
来源:Makefile7-9
etcd支持为各种平台构建
可用平台:linux-amd64, linux-386, linux-arm, linux-arm64, linux-ppc64le, linux-s390x, darwin-amd64, darwin-arm64, windows-amd64, windows-arm64
为所有支持的平台构建
构建etcd工具
以下是etcd构建系统组件的概述
来源:Makefile1-25
etcd采用全面的测试策略,包含多种测试类型,以确保代码质量和正确性。
etcd的测试套件包括
| 测试类型 | 描述 | 常见用法 |
|---|---|---|
| 单元测试 | 隔离测试单个组件 | make test-unit |
| 集成测试 | 测试组件之间的交互 | make test-integration |
| 端到端(e2e)测试 | 测试完整的系统功能 | make test-e2e |
| 代理测试 | 测试gRPC代理功能 | make test-grpcproxy-integration, make test-grpcproxy-e2e |
| 健壮性测试 | 测试系统在高压下的稳定性 | make test-robustness |
来源:Makefile31-71 scripts/test.sh115-156
运行全部测试套件
运行特定测试类型
以下图示说明了测试执行工作流程
来源:scripts/test.sh31-337 Makefile63-69
要运行特定包或测试用例的测试
当您想专注于测试特定组件时,此功能非常有用。
可以通过环境变量配置测试
| 可变 | 描述 |
|---|---|
PASSES | 要运行的测试通过(例如,“unit”,“integration”,“e2e”) |
PKG | 要测试的包(例如,“./wal”,“./clientv3”) |
TESTCASE | 测试用例过滤器(支持正则表达式) |
TIMEOUT | 测试超时(默认值因测试类型而异) |
KEEP_GOING_SUITE | 设置为true以在失败时继续下一个套件 |
KEEP_GOING_MODULE | 设置为true以在失败时继续下一个模块 |
COVERDIR | 覆盖率输出文件的目录 |
来源:scripts/test.sh60-61 scripts/test.sh193-211
生成代码覆盖率报告
将覆盖率报告上传到Codecov
来源:Makefile63-69 scripts/codecov_upload.sh1-18
etcd包含各种验证工具以确保代码质量
自动修复常见问题
来源:Makefile76-83 scripts/fix.sh1-39
以下图示说明了etcd的典型开发工作流程
来源:Makefile1-227 scripts/test.sh1-676
您可以指定自定义的Go构建标志
交叉编译到不同平台
etcd使用GitHub Actions进行持续集成。CI过程运行各种检查
来源:.github/workflows/codeql-analysis.yml1-56 .github/workflows/scorecards.yml1-56 .github/workflows/measure-testgrid-flakiness.yaml1-27
.go-version文件中指定的版本一致。TIMEOUT=5m增加超时时间。本文档提供了构建和测试etcd的全面概述。通过遵循这些说明,您可以从源代码构建etcd,运行测试,并确保您的代码更改符合项目的质量标准。有关贡献代码的信息,请参阅贡献。