
使用 AWS CLI 的 codebuild batch-get-reports 批量获取 CodeBuild 测试与覆盖率报告详情【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读本文围绕 AWS CLI 中aws codebuild batch-get-reports命令讲解如何通过一次请求按 ARN 批量获取 AWS CodeBuild 生成的测试报告TEST与代码覆盖率报告CODE_COVERAGE的完整元数据。你将掌握该命令的参数格式、返回结构每个字段的业务含义、与其他报告相关命令如list-reports、describe-test-cases、batch-get-report-groups的组合用法并从当前仓库的 service-2.json 中理解其底层模型约束与取值枚举。命令概览一次请求批量读取多个报告batch-get-reports是 AWS CodeBuild 的批量查询接口与list-reports只返回报告 ARN 列表不同它直接返回每个报告完整的元数据对象Report。其核心使用场景是当你在监控面板、CI 回调脚本或告警系统中拿到一批报告 ARN 后通过一次 API 调用即可拿到这些报告的状态、测试统计、导出配置等全部信息避免逐个查询带来的多次往返。从仓库中的服务模型 service-2.json 可以看到该操作的定义BatchGetReports: { name: BatchGetReports, http: { method: POST, requestUri: / }, input: { shape: BatchGetReportsInput }, output: { shape: BatchGetReportsOutput }, errors: [ { shape: InvalidInputException } ], documentation: p Returns an array of reports. /p }它只有一个必需的输入参数reportArns请求方式为 HTTPS POST唯一的错误类型为InvalidInputException输入不合法时抛出。请求参数report-arns 的格式与约束该命令唯一必需的参数是--report-arns接受一个或多个报告 ARN。ARN 的完整形态为arn:aws:codebuild:region-ID:user-ID:report/report-group-name:report ID注意 ARN 中携带了所属的报告组名称report-group-name以及报告自身的 ID 段报告组 ARN 的形态则为arn:aws:codebuild:region-ID:user-ID:report-group/report-group-name可对比参考 batch-get-report-groups.rst。在底层模型中ReportArns被定义为字符串列表约束如下见 service-2.json最少 1 个不允许传空列表最多 100 个单次调用最多查询 100 个报告 ARN超出上限会校验失败。典型调用示例同时查询两个报告aws codebuild batch-get-reports \ --report-arns arn:aws:codebuild:region-ID:user-ID:report/report-group-name:report 1 ID arn:aws:codebuild:region-ID:user-ID:report/report-group-name:report 2 ID返回结构逐字段解读以文档中的示例输出为例完整继承自 batch-get-reports.rst{ reports: [ { arn: arn:aws:codebuild:region-ID:user-ID:report/report-group-name:report 1 ID, type: TEST, name: report-group-name, reportGroupArn: arn:aws:codebuild:region-ID:user-ID:report-group/report-group-name, executionId: arn:aws:codebuild:region-ID:user-ID:build/test-reports:ID, status: FAILED, created: 2020-10-01T11:25:22.531000-07:00, expired: 2020-10-31T11:25:22-07:00, exportConfig: { exportConfigType: NO_EXPORT }, truncated: false, testSummary: { total: 28, statusCounts: { ERROR: 5, FAILED: 1, SKIPPED: 4, SUCCEEDED: 18, UNKNOWN: 0 }, durationInNanoSeconds: 94000000 } }, { arn: arn:aws:codebuild:region-ID:user-ID:report/report-group-name:report 2 ID, type: TEST, name: report-group-name, reportGroupArn: arn:aws:codebuild:region-ID:user-ID:report-group/report-group-name, executionId: arn:aws:codebuild:region-ID:user-ID:build/test-reports:ID, status: FAILED, created: 2020-10-01T11:13:05.816000-07:00, expired: 2020-10-31T11:13:05-07:00, exportConfig: { exportConfigType: NO_EXPORT }, truncated: false, testSummary: { total: 28, statusCounts: { ERROR: 5, FAILED: 1, SKIPPED: 4, SUCCEEDED: 18, UNKNOWN: 0 }, durationInNanoSeconds: 94000000 } } ], reportsNotFound: [] }返回体由两个顶层字段组成见 service-2.jsonreports查询到的Report对象数组reportsNotFound传入但未关联到任何报告可能已删除、已过期或 ARN 拼写错误的 ARN 数组便于脚本精确判断哪些请求失败。Report对象各字段含义如下模型定义见 service-2.json字段类型/取值含义arn字符串本次报告运行的 ARNtypeTEST/CODE_COVERAGE报告类型测试报告或代码覆盖率报告name字符串报告运行时的名称示例中即报告组名reportGroupArn字符串该报告所属报告组的 ARNexecutionId字符串生成该报告的构建运行的 ARNstatusGENERATING/SUCCEEDED/FAILED/INCOMPLETE/DELETING报告当前状态见下方枚举说明created时间戳报告运行发生的时间expired时间戳报告过期时间报告创建后 30 天过期过期后无法在 CodeBuild 中查看exportConfig对象原始数据导出配置见下方说明truncated布尔值报告是否被截断测试用例数量超过上限时被截断testSummary对象测试报告统计信息仅TEST类型报告存在codeCoverageSummary对象代码覆盖率统计信息仅CODE_COVERAGE类型报告存在状态枚举ReportStatusTypestatus字段的合法取值由模型中的枚举定义见 service-2.jsonGENERATING报告正在生成中SUCCEEDED报告生成成功FAILED报告生成失败示例中两个报告均为该状态通常意味着对应构建测试整体未通过或报告生成出错INCOMPLETE报告不完整DELETING报告正在被删除。导出配置exportConfigexportConfig描述报告原始数据导出到哪里见 service-2.jsonexportConfigType取值S3报告结果导出到 S3 存储桶此时对象中还会带有s3Destination字段描述桶与路径NO_EXPORT不导出示例中即为该值。该配置对应create-report-group/update-report-group命令中的导出设置。测试统计testSummarytestSummary模型见 service-2.json包含三个必需字段total报告中的测试用例总数注意该总数包含被截断的用例即truncated: true时total仍为全部统计值statusCounts按状态统计的用例数量映射示例中出现ERROR、FAILED、SKIPPED、SUCCEEDED、UNKNOWN五类计数合计 5 1 4 18 0 28与total一致durationInNanoSeconds运行该报告全部测试用例所耗费的纳秒数示例中 94000000 纳秒即 94 毫秒。组合使用从列出 ARN 到逐项排查的完整链路batch-get-reports通常不是孤立使用的它可以与其他报告命令组成一套完整的排查工作流列出报告 ARN使用aws codebuild list-reports获取当前账号下所有报告 ARN只返回 ARN 列表见 list-reports.rst也可用list-reports-for-report-group按报告组筛选批量获取详情将得到的 ARN 交给batch-get-reports一次拿到每个报告的状态与测试统计下钻测试用例对状态异常如FAILED的报告用aws codebuild describe-test-cases --report-arn arn获取具体失败用例的名称、状态、耗时与错误消息见 describe-test-cases.rst关联报告组需要了解报告所属报告组的导出配置时再用batch-get-report-groups按报告组 ARN 查询。这套链路非常适合写入 CI 门禁或告警脚本先list-reports拿到新生成报告再batch-get-reports检查status与testSummary.statusCounts一旦发现FAILED用例数大于 0 即可触发通知或回滚动作。使用注意与边界单次上限 100 个 ARN超过 100 个请分批调用否则会触发输入校验错误InvalidInputException输入不能为空reportArns是必需参数空列表同样非法报告 30 天过期expired字段显示报告在创建 30 天后过期过期报告无法在 CodeBuild 中查看向batch-get-reports传入过期/已删除报告的 ARN 时该 ARN 会出现在返回的reportsNotFound数组中而非报错脚本应据此做容错处理测试报告 vs 覆盖率报告type为TEST时查看testSummary为CODE_COVERAGE时查看codeCoverageSummary二者互斥存在当前仓库的模型来源以上字段定义、枚举与数量约束均可在 awscli/botocore/data/codebuild/2016-10-06/service-2.json 中直接核对这也是 AWS CLI 生成该命令帮助文档与参数校验的底层依据。小结aws codebuild batch-get-reports是 CodeBuild 报告体系中批量取详情的关键一环入参简洁仅一组报告 ARN最多 100 个出参完整涵盖报告类型、状态、归属报告组、执行构建、导出配置、测试统计与截断标记并通过对reportsNotFound的返回实现部分失败容错。将它与list-reports、describe-test-cases、batch-get-report-groups组合即可在脚本中完成从发现报告到定位失败用例的全链路自动化。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考