can be tested 标签之后。
如 GitHub checks 文档所述,这些检查结果会显示在 GitHub 拉取请求页面上。
如果某项检查失败,你可能需要修复它。
本页概述了你可能会遇到的检查,以及相应的处理方法。
如果看起来检查失败与你的更改无关,可能只是暂时性故障或基础设施问题。
向该拉取请求推送一个空提交,以重新启动 CI 检查:
与 master 合并
Cannot fetch mergecommit。
要修复此检查,请按 GitHub 文档 中的说明解决冲突,或者使用 git 将 master 分支合并到你的拉取请求分支。
文档检查
ERROR 和 WARNING 消息。
描述检查
Docker 镜像
官方 Docker 库测试
clickhouse/clickhouse-server Docker 镜像 能否正常工作。
要添加新测试,请创建目录 ci/jobs/scripts/docker_server/tests/$test_name,并在其中创建 run.sh 脚本。
有关这些测试的更多信息,请参见 CI 作业脚本文档。
Marker 检查
风格检查
cpp
ci/jobs/scripts/check_style/check_cpp.sh 脚本 (也可在本地运行) 执行基于简单正则表达式的代码风格检查。
如果检查失败,请根据代码风格指南修复相应的风格问题。
codespell, aspell
mypy
在本地运行样式检查作业
clickhouse/style-test Docker 镜像,并在容器化环境中运行该作业。
除 Python 3 和 Docker 外,无需其他依赖。
运行无状态测试
前置条件
- Python 3 (仅需标准库)
- Docker
在本地运行 CI 作业
- 始终按 CI 报告中的显示结果原样引用作业名称 (其中可能包含空格和逗号) ,例如:
"Stateless tests (amd_debug, parallel)"。这样会使用与 CI 相同的 ClickHouse 配置,并运行相同的测试。 - 作业名称中的架构和构建类型 (例如
amd_debug) 是 CI 专用标记。在本地运行时,它们不会产生任何影响——作业会使用你提供的二进制文件,以及你当前所在架构。作业名称只决定 ClickHouse 配置和测试集 (除非用--test覆盖) 。 - 在 CI 中,功能测试会拆分成多个批次,以便更高效地利用资源。例如,
"Stateless tests (amd_debug, parallel)"和"Stateless tests (amd_debug, sequential)"合起来覆盖完整范围:可安全并行运行的测试会并发执行,其余测试则顺序执行。这种拆分通过尽可能提高并行度来缩短 CI 总耗时。若要在本地复现完整测试范围,请同时运行这两个批次。 - 此外还有一个
"Fast test"CI 作业,它会运行一小部分功能测试,以验证 ClickHouse 的基础功能——它使用的是不包含全部可选模块的构建,也是发现回归问题最快的方法。你也可以用同样的方式在本地运行它。将你的 ClickHouse 二进制文件放到默认搜索路径之一 (./ci/tmp/clickhouse、./build/programs/clickhouse或./clickhouse) ——否则该作业会先尝试构建 ClickHouse:
在 CI 作业中运行指定测试
--test 时,该作业会准备一套与 CI 中使用的完全相同的 ClickHouse 配置,但只运行选定的测试:
- 你可以传入多个测试名称:
- 提示:如果任意 ClickHouse 配置都可以,只是需要运行特定测试,请使用别名
functional,而不是完整的 job 名称:
其他自定义选项
--path PATH— ClickHouse 二进制文件的自定义路径。默认情况下,运行器会按顺序在以下位置查找:./ci/tmp/clickhouse、./build/programs/clickhouse、./clickhouse。--count N— 将每个测试重复执行 N 次。--workers N— 覆盖根据机器容量自动计算出的并行工作线程数。
构建检查
在本地运行构建
可用的构建作业
Build (amd_debug)- 带符号的调试构建Build (amd_release)- 优化后的发布构建Build (amd_asan)- Address Sanitizer 构建Build (amd_tsan)- Thread Sanitizer 构建Build (amd_msan)- Memory Sanitizer 构建Build (amd_ubsan)- Undefined Behavior Sanitizer 构建Build (amd_binary)- 不使用 Thin LTO 的快速发布构建Build (amd_compat)- 适用于旧系统的兼容性构建Build (amd_musl)- 使用 musl libc 的构建Build (amd_darwin)- macOS 构建Build (amd_freebsd)- FreeBSD 构建
Build (arm_release)- ARM64 优化后的发布构建Build (arm_asan)- ARM64 Address Sanitizer 构建Build (arm_coverage)- 带覆盖率插桩的 ARM64 构建Build (arm_binary)- 不使用 Thin LTO 的 ARM64 快速发布构建Build (arm_darwin)- macOS ARM64 构建Build (arm_v80compat)- ARMv8.0 兼容性构建
Build (ppc64le)- PowerPC 64 位小端Build (riscv64)- RISC-V 64 位Build (s390x)- IBM System/390 64 位Build (loongarch64)- LoongArch 64 位
<repo_root>/ci/tmp/build 目录下。
注意: 对于不属于“其他架构”类别的构建 (“其他架构”类别使用交叉编译) ,你的本地机器架构必须与构建类型一致,才能按 BUILD_JOB_NAME 的要求生成相应构建。
示例
无状态功能测试
集成测试
Bugfix validate 检查
压力测试
- 请先修复所有其他测试失败;
- 查看报告,找到服务器日志,并检查其中可能的错误原因。
兼容性检查
clickhouse 二进制文件能否在使用旧版 libc 的发行版上运行。
如果失败,请向维护者寻求帮助。