ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AWS CLI `codebuild batch-get-build-batches` 命令详解:批量查询 CodeBuild 构建批次状态与运行细节

AWS CLI `codebuild batch-get-build-batches` 命令详解:批量查询 CodeBuild 构建批次状态与运行细节 AWS CLIcodebuild batch-get-build-batches命令详解批量查询 CodeBuild 构建批次状态与运行细节【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读aws codebuild batch-get-build-batches是 AWS CLI 提供的批量查询接口用于按 ID 同时获取一个或多个 AWS CodeBuild 构建批次batch build的完整信息包括当前阶段、状态、源码版本、构建组build group拓扑及每个子构建的概要。本文基于 batch-get-build-batches.rst 示例文档结合 service-2.json 中 CodeBuild 服务的 API 模型带你掌握该命令的用法、输出字段含义与底层数据结构从而能够独立完成构建批次的批量状态核查与问题定位。一、命令概览batch-get-build-batches 能做什么CodeBuild 的批量构建batch build机制允许一次提交同时在多个构建组build group上运行构建适用于需要并行编译、分阶段依赖执行的复杂构建流水线。batch-get-build-batches正是用来“按 ID 批量拉取这些构建批次详情”的查询命令。在 service-2.json 的 API 模型定义中该操作描述为 Retrieves information about one or more batch builds其 HTTP 调用方式为POST /JSON 协议目标前缀CodeBuild_20161006。它面向的典型场景包括CI/CD 流水线结束后批量确认各批次是否成功针对失败的批次检查其阶段phase时间线与上下文信息以定位问题分析构建组之间的依赖关系与实际执行时间。与之相对的aws codebuild batch-get-builds用于查询普通非批次构建示例见 batch-get-builds.rst。二、命令用法与参数详解基本命令示例原文示例来源batch-get-build-batches.rstaws codebuild batch-get-build-batches \ --ids codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE--ids参数这是该命令唯一且必填的参数。根据 service-2.json 中BatchGetBuildBatchesInput的定义ids被标记为required类型为BuildBatchIds单个 ID 的格式为项目名:批次ID如codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLEBuildBatchIds是一个字符串列表约束为min: 0、max: 100见 service-2.json即一次最多可传入 100 个批次 ID传入多个 ID 时在命令行中重复使用--ids并追加值即可例如aws codebuild batch-get-build-batches \ --ids codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE \ codebuild-demo-project:a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d输出结构根据BatchGetBuildBatchesOutputservice-2.json响应包含两个顶层字段字段类型说明buildBatchesBuildBatches数组上限 100查询成功的构建批次对象列表每个元素为完整的BuildBatch结构buildBatchesNotFoundBuildBatchIds数组未能找到的批次 ID 列表便于排查拼写错误或已删除的批次请求中的 ID 只会落在其中一个字段中两列表互斥且合起来覆盖全部请求 ID。三、完整输出解析一次构建批次的生命周期快照以下是执行上述示例命令后返回的完整 JSON 输出继承自原文档它完整展示了一个已成功构建批次的所有维度{ buildBatches: [ { id: codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE, arn: arn:aws:codebuild:us-west-2:123456789012:build-batch/codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE, startTime: 2020-11-03T21:52:20.77500000:00, endTime: 2020-11-03T21:56:59.78400000:00, currentPhase: SUCCEEDED, buildBatchStatus: SUCCEEDED, resolvedSourceVersion: 0a6546f68309560d08a310daac92314c4d378f6b, projectName: codebuild-demo-project, phases: [ { phaseType: SUBMITTED, phaseStatus: SUCCEEDED, startTime: 2020-11-03T21:52:20.77500000:00, endTime: 2020-11-03T21:52:20.97600000:00, durationInSeconds: 0 }, { phaseType: DOWNLOAD_BATCHSPEC, phaseStatus: SUCCEEDED, startTime: 2020-11-03T21:52:20.97600000:00, endTime: 2020-11-03T21:52:57.40100000:00, durationInSeconds: 36 }, { phaseType: IN_PROGRESS, phaseStatus: SUCCEEDED, startTime: 2020-11-03T21:52:57.40100000:00, endTime: 2020-11-03T21:56:59.75100000:00, durationInSeconds: 242 }, { phaseType: COMBINE_ARTIFACTS, phaseStatus: SUCCEEDED, startTime: 2020-11-03T21:56:59.75100000:00, endTime: 2020-11-03T21:56:59.78400000:00, durationInSeconds: 0 }, { phaseType: SUCCEEDED, startTime: 2020-11-03T21:56:59.78400000:00 } ], source: { type: GITHUB, location: https://github.com/my-repo/codebuild-demo-project.git, gitCloneDepth: 1, gitSubmodulesConfig: { fetchSubmodules: false }, reportBuildStatus: false, insecureSsl: false }, secondarySources: [], secondarySourceVersions: [], artifacts: { location: }, secondaryArtifacts: [], cache: { type: NO_CACHE }, environment: { type: LINUX_CONTAINER, image: aws/codebuild/amazonlinux2-x86_64-standard:3.0, computeType: BUILD_GENERAL1_SMALL, environmentVariables: [], privilegedMode: false, imagePullCredentialsType: CODEBUILD }, logConfig: { cloudWatchLogs: { status: ENABLED }, s3Logs: { status: DISABLED, encryptionDisabled: false } }, buildTimeoutInMinutes: 60, queuedTimeoutInMinutes: 480, complete: true, initiator: Strohm, encryptionKey: arn:aws:kms:us-west-2:123456789012:alias/aws/s3, buildBatchNumber: 6, buildBatchConfig: { serviceRole: arn:aws:iam::123456789012:role/service-role/codebuild-demo-project, restrictions: { maximumBuildsAllowed: 100 }, timeoutInMins: 480 }, buildGroups: [ { identifier: DOWNLOAD_SOURCE, ignoreFailure: false, currentBuildSummary: { arn: arn:aws:codebuild:us-west-2:123456789012:build/codebuild-demo-project:379737d8-bc35-48ec-97fd-776d27545315, requestedOn: 2020-11-03T21:52:21.39400000:00, buildStatus: SUCCEEDED, primaryArtifact: { type: no_artifacts, identifier: DOWNLOAD_SOURCE }, secondaryArtifacts: [] } }, { identifier: linux_small, dependsOn: [], ignoreFailure: false, currentBuildSummary: { arn: arn:aws:codebuild:us-west-2:123456789012:build/codebuild-demo-project:dd785171-ed84-4bb6-8ede-ceeb86e54bdb, requestedOn: 2020-11-03T21:52:57.60400000:00, buildStatus: SUCCEEDED, primaryArtifact: { type: no_artifacts, identifier: linux_small }, secondaryArtifacts: [] } }, { identifier: linux_medium, dependsOn: [ linux_small ], ignoreFailure: false, currentBuildSummary: { arn: arn:aws:codebuild:us-west-2:123456789012:build/codebuild-demo-project:97cf7bd4-5313-4786-8243-4aef350a1267, requestedOn: 2020-11-03T21:54:18.47400000:00, buildStatus: SUCCEEDED, primaryArtifact: { type: no_artifacts, identifier: linux_medium }, secondaryArtifacts: [] } }, { identifier: linux_large, dependsOn: [ linux_medium ], ignoreFailure: false, currentBuildSummary: { arn: arn:aws:codebuild:us-west-2:123456789012:build/codebuild-demo-project:60a194cd-0d03-4337-9db1-d41476a17d27, requestedOn: 2020-11-03T21:55:39.20300000:00, buildStatus: SUCCEEDED, primaryArtifact: { type: no_artifacts, identifier: linux_large }, secondaryArtifacts: [] } } ] } ], buildBatchesNotFound: [] }四、核心字段深度解读基于 API 模型BuildBatch结构在 service-2.json 中有完整定义下面按维度拆解各字段含义。1. 基础身份信息id批次标识符格式为项目名:批次UUIDarn批次资源的 Amazon 资源名称形如arn:aws:codebuild:region:account-id:build-batch/id是后续调用其他 API如batch-get-build-batches的再次查询的可靠凭据projectName所属构建项目名称buildBatchNumber该批次在项目内的序号。按模型说明项目内第一个批次数值为1此后每次递增 1且删除批次不会改变其他批次的序号initiator启动该批次的实体可能是用户名、CodePipeline 管道名格式codepipeline/xxx或CodeBuild-Jenkins-Plugin。2. 状态与时间startTime/endTime批次开始与结束时间ISO 8601 时间戳currentPhase当前所处阶段名见下文阶段枚举buildBatchStatus批次整体状态取值来自StatusType枚举service-2.jsonSUCCEEDED、FAILED、FAULT、TIMED_OUT、IN_PROGRESS、STOPPEDcomplete布尔值标识批次是否已结束buildTimeoutInMinutes/queuedTimeoutInMinutes单次构建的最长执行时间与排队超时时间分钟。模型中对BuildTimeOut的约束为min: 5, max: 2160见 service-2.json。3. 阶段时间线phasesphases数组由BuildBatchPhase对象组成service-2.json每个阶段包含phaseType、phaseStatus、startTime、endTime、durationInSeconds以及故障排查用的contexts。phaseType的合法取值由BuildBatchPhaseType枚举限定service-2.json阶段类型含义SUBMITTED批次已提交DOWNLOAD_BATCHSPEC正在下载批次构建规范batch buildspec文件IN_PROGRESS批次构建进行中COMBINE_ARTIFACTS正在合并并上传各构建组的输出产物SUCCEEDED批次构建成功FAILED有一个或多个构建失败STOPPED批次被停止phaseStatus使用StatusType枚举SUCCEEDED、FAILED、FAULT、TIMED_OUT、IN_PROGRESS、STOPPED。上例中最后一个阶段SUCCEEDED没有endTime与durationInSeconds因为该阶段是当前正在经历的终态阶段这也解释了为何currentPhase同样是SUCCEEDED。通过各阶段的durationInSeconds你可以快速定位耗时瓶颈——例如上例中DOWNLOAD_BATCHSPEC花了 36 秒、IN_PROGRESS花了 242 秒而SUBMITTED与COMBINE_ARTIFACTS近乎瞬时。4. 源码与构建配置source主源码配置示例为 GitHub 仓库type: GITHUB包含gitCloneDepth克隆深度、gitSubmodulesConfig.fetchSubmodules是否拉取子模块、reportBuildStatus是否回写构建状态到 GitHub、insecureSsl等resolvedSourceVersion实际解析出的源码版本。模型说明指出CodeCommit / GitHub / GitHub Enterprise / Bitbucket 场景下为 commit IDCodePipeline 场景下为管道提供的源修订版本S3 场景下该字段不适用secondarySources/secondarySourceVersions次级源码及其版本示例中为空数组environment构建环境包括容器类型如LINUX_CONTAINER、镜像如aws/codebuild/amazonlinux2-x86_64-standard:3.0、计算规格如BUILD_GENERAL1_SMALL、环境变量、privilegedMode特权模式用于 Docker-in-Docker及镜像拉取凭据类型artifacts/secondaryArtifacts主/次级构建产物信息location为空表示本例未配置产物上传位置cache缓存配置NO_CACHE表示不启用缓存CacheType枚举还包含S3、LOCALlogConfig日志配置示例开启 CloudWatch LogscloudWatchLogs.status: ENABLED而关闭 S3 日志s3Logs.status: DISABLEDencryptionKey用于加密构建产物的 KMS 密钥 ARN 或别名vpcConfig/fileSystemLocationsVPC 网络配置与 EFS 文件系统挂载配置本示例未展示。5. 批次配置buildBatchConfigbuildBatchConfig展示该项目为批次构建设定的全局配置示例中包含serviceRole批次构建使用的 IAM 服务角色 ARNrestrictions.maximumBuildsAllowed批内允许的最大构建数示例为 100timeoutInMins批次整体超时时间分钟示例为 480。五、构建组buildGroups并行与依赖的核心数据结构批量构建的精髓在于构建组拓扑。buildGroups数组中的每个元素是BuildGroup对象service-2.json模型文档将其定义为“用于组合可并行运行的构建同时允许对其他构建组设置依赖”。以示例输出为例DOWNLOAD_SOURCE无依赖 → linux_small无依赖 → linux_medium依赖 linux_small → linux_large依赖 linux_medium各字段含义identifier构建组的唯一标识对应 buildspec 中 batch 段定义的组名dependsOn该组依赖的其他构建组标识符列表。示例中linux_medium依赖linux_small、linux_large依赖linux_medium而linux_small的dependsOn为空说明它可以在DOWNLOAD_SOURCE完成后立即并行启动ignoreFailure是否忽略该组的失败为true时该组失败不会导致整个批次失败currentBuildSummary当前执行或最后执行的构建概要类型为BuildSummaryservice-2.json包含本次构建的arn、启动时间requestedOn、状态buildStatusStatusType枚举以及primaryArtifact/secondaryArtifacts产物概要priorBuildSummaryList历史构建概要列表重试/多次运行时出现。通过buildGroups你可以完整还原批次的并行调度图、确认每组产物去向并借助每组currentBuildSummary.arn跳转到对应普通构建的详情即aws codebuild batch-get-builds --ids 该ARN实现从“批次”到“单个构建”的下钻排查。六、常见使用技巧与注意事项配合列表命令定位 ID批次 ID 不易记忆可先用aws codebuild list-build-batches --project-name 项目名获取批次列表再用batch-get-build-batches拉取详情。失败定位当buildBatchStatus为FAILED/FAULT/TIMED_OUT时优先查看phases[].contexts模型说明其用于辅助排查失败的阶段以及各buildGroups[].currentBuildSummary.buildStatus快速锁定是哪个构建组、哪个阶段出了问题。批量查询上限--ids一次最多传 100 个 IDBuildBatchIds与BuildBatches的max均为 100超过上限需要分批查询。ID 拼写与已删除批次查询不到的 ID 会原样出现在响应字段buildBatchesNotFound中而不是整体报错脚本中应对该字段做非空检查。从源码理解命令命令的完整参数与响应模型定义在 service-2.json 的BatchGetBuildBatchesInput/BatchGetBuildBatchesOutput/BuildBatch等结构中是排查字段含义的第一手依据同目录下的 batch-get-builds.rst、batch-delete-builds.rst 等示例可作为相关命令的参考。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表