使用 codebuild-tests-run CLI 命令
Amazon CodeBuild 提供将测试命令和测试文件位置作为输入的 CLI。带有这些输入的 CLI 会根据测试文件名称将测试拆分为在 parallelism 字段中指定的分片数量。将测试文件分配给分片由分片策略决定。
codebuild-tests-run \ --files-search "codebuild-glob-search '**/__tests__/*.js'" \ --test-command 'npx jest --runInBand --coverage' \ --sharding-strategy 'equal-distribution'
下表说明了 codebuild-tests-run CLI 命令的字段。
| 字段名称 | 类型 | 必需或可选 | 定义 |
|---|---|---|---|
|
|
字符串 |
必需 |
此命令用于运行测试。 |
|
|
字符串 |
必需 |
此命令给出了测试文件列表。您可以使用 Amazon CodeBuild 提供的 codebuild-glob-search CLI 命令或您选择的任何其它文件搜索工具。 注意确保 |
|
|
枚举 |
可选 |
有效值:
有关更多信息,请参阅 关于测试拆分。 |
codebuild-tests-run CLI 首先使用 files-search 参数中提供的命令识别测试文件列表。然后,它使用指定的分片策略确定为当前分片(环境)指定的测试文件子集。最后,测试文件的这一子集格式化为以空格分隔的列表,并在执行之前附加到在 test-command 参数中提供的命令的末尾。
对于不接受空格分隔列表的测试框架,codebuild-tests-run CLI 通过 CODEBUILD_CURRENT_SHARD_FILES 环境变量提供了一种灵活的替代方案。此变量包含为当前构建分片指定的测试文件路径的换行分隔列表。通过利用此环境变量,您可以轻松地适应各种测试框架要求,并适应那些期望输入格式不同于空格分隔列表的要求。此外,还可以根据测试框架的需要格式化测试文件名。以下是在 Linux 上通过 Django 框架使用 CODEBUILD_CURRENT_SHARD_FILES 的示例。此处,CODEBUILD_CURRENT_SHARD_FILES 用于获取 Django 支持的点符号文件路径:
codebuild-tests-run \ —files-search "codebuild-glob-search '/tests/test_.py'" \ —test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \ —sharding-strategy 'equal-distribution'
注意
请注意,CODEBUILD_CURRENT_SHARD_FILES 环境变量只能在 codebuild-tests-run CLI 的范围内使用。
另外,如果您在测试命令内使用 CODEBUILD_CURRENT_SHARD_FILES,请将 CODEBUILD_CURRENT_SHARD_FILES 放在双引号内,如上面的示例所示。