ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AWS CLI CodeCommit 审核规则评估实战:evaluate-pull-request-approval-rules 命令详解

AWS CLI CodeCommit 审核规则评估实战:evaluate-pull-request-approval-rules 命令详解 AWS CLI CodeCommit 审核规则评估实战evaluate-pull-request-approval-rules 命令详解【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli在 AWS CodeCommit 中合并拉取请求Pull Request之前往往需要满足一定的审批条件例如必须获得指定数量或指定审批人的批准。aws codecommit evaluate-pull-request-approval-rules正是用于评估拉取请求是否已满足全部审批规则的核心命令。本文以 evaluate-pull-request-approval-rules.rst 为骨架结合本仓库中的 CodeCommit 服务模型源码与配套示例系统讲解该命令的参数、返回值、判定逻辑以及在实际工作流中的配套用法帮助你准确判断拉取请求是否具备合并条件。一、命令概述与适用场景evaluate-pull-request-approval-rules是 AWS CLI 提供的 CodeCommit 拉取请求审批规则评估命令。它针对指定的拉取请求及其修订版本revision逐一检查该拉取请求上挂载的每条审批规则是否被满足并返回整体评估结果。典型应用场景包括合并前检查在自动化脚本或 CI/CD 流水线中合并拉取请求前先调用本命令确认approved为true后再执行merge-pull-request-*系列命令审批进度跟踪查看当前还有哪些审批规则未满足以及哪些规则已经被满足覆盖状态确认判断审批规则是否已被有权限的用户通过override-pull-request-approval-rules覆盖从而允许在规则未满足时仍可合并。二、命令语法与参数说明命令的基本语法如下aws codecommit evaluate-pull-request-approval-rules \ --pull-request-id value \ --revision-id value在 CodeCommit 服务模型 中EvaluatePullRequestApprovalRulesInput将以下两个参数声明为必填项参数说明--pull-request-id要评估的拉取请求的系统生成 ID字符串。在示例中使用的是27。--revision-id拉取请求修订版本的系统生成 ID。要获取拉取请求的最新修订 ID请使用get-pull-request命令见下文。在示例中使用的是9f29d167EXAMPLE。三、官方示例与输出解读来自 官方示例文档 的完整命令如下aws codecommit evaluate-pull-request-approval-rules \ --pull-request-id 27 \ --revision-id 9f29d167EXAMPLE在该示例中指定拉取请求上的某条审批规则尚未被满足因此命令输出中approved的值为false{ evaluation: { approved: false, approvalRulesNotSatisfied: [ Require two approved approvers ], overridden: false, approvalRulesSatisfied: [] } }输出结构Evaluation 对象根据服务模型 EvaluatePullRequestApprovalRulesOutput 与 Evaluation命令返回一个名为evaluation的嵌套对象包含四个字段字段类型含义approved布尔值拉取请求是否处于已批准状态即所有审批规则的条件都被满足。overridden布尔值拉取请求的审批规则要求是否已被覆盖即不再需要满足这些规则。approvalRulesSatisfied字符串列表条件已得到满足的审批规则的名称。approvalRulesNotSatisfied字符串列表条件尚未得到满足的审批规则的名称。在上面的示例输出中approvalRulesNotSatisfied列出了Require two approved approvers说明这条名为需要两名已批准审批人的规则条件尚未满足approvalRulesSatisfied为空数组说明当前没有任何规则被满足overridden为false说明规则没有被覆盖综合以上approved为false该拉取请求目前不满足合并所需的审批条件。四、配套命令获取 revision-id--revision-id是必填参数且官方示例中的修订 ID 带有EXAMPLE后缀9f29d167EXAMPLE实际使用时必须替换为真实值。获取方式有两种使用get-pull-request命令服务模型明确说明要检索拉取请求的最新修订 ID请使用 GetPullRequest。参考 get-pull-request.rstaws codecommit get-pull-request \ --pull-request-id 27输出中的revisionId字段即为该拉取请求当前的修订 ID{ pullRequest: { revisionId: e47def21EXAMPLE, pullRequestId: 27, pullRequestStatus: OPEN, approvalRules: [ { approvalRuleName: 2-approver-rule-for-main, approvalRuleContent: {\Version\: \2018-11-08\,\Statements\: [{\Type\: \Approvers\,\NumberOfApprovalsNeeded\: 2,\ApprovalPoolMembers\: [\arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\]}]} } ] } }组合使用在脚本中可以先执行get-pull-request用jq等工具提取revisionId再传给评估命令实现自动化判定REV_ID$(aws codecommit get-pull-request \ --pull-request-id 27 \ --query pullRequest.revisionId \ --output text) aws codecommit evaluate-pull-request-approval-rules \ --pull-request-id 27 \ --revision-id $REV_ID注意revisionId会随着拉取请求目标分支的更新而变化评估时应始终使用最新修订 ID否则评估结果可能针对的是旧版本的代码与审批状态。五、审批规则如何产生创建审批规则示例示例输出中出现的规则名称Require two approved approvers正是通过 create-pull-request-approval-rule.rst 创建的。该命令展示了审批规则的 JSON 内容结构评估命令正是基于这些规则的满足情况来判定结果aws codecommit create-pull-request-approval-rule \ --pull-request-id 42 \ --approval-rule-name Require two approved approvers \ --approval-rule-content {\Version\: \2018-11-08\,\Statements\: [{\Type\: \Approvers\,\NumberOfApprovalsNeeded\: 2,\ApprovalPoolMembers\: [\CodeCommitApprovers:123456789012:Nikhil_Jayashankar\, \arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\]}]}审批规则内容approval-rule-content采用 JSON 格式Version固定为2018-11-08当前审批规则内容版本Statements规则语句列表其中Type为Approvers表示审批人规则NumberOfApprovalsNeeded需要满足的批准数量示例为 2ApprovalPoolMembers审批池成员可以是 CodeCommit 用户标识如CodeCommitApprovers:123456789012:Nikhil_Jayashankar或 IAM/STS 角色 ARN如arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*。当该规则要求的 2 个批准数未达成时evaluate-pull-request-approval-rules就会把Require two approved approvers放进approvalRulesNotSatisfied列表并将approved置为false——这正是本文示例输出的产生背景。六、与覆盖Override机制的联动evaluation对象中的overridden字段用于标识审批规则是否已被覆盖。当审批规则因特殊情况无法满足、但合并又必须推进时有权限的用户可以执行 override-pull-request-approval-rules.rst 中的命令进行覆盖aws codecommit override-pull-request-approval-rules \ --pull-request-id 34 \ --revision-id 927df8d8EXAMPLE \ --override-status OVERRIDE该命令将指定拉取请求的审批规则设置为OVERRIDE状态如需撤销覆盖则将--override-status设为REVOKE。覆盖之后再次执行evaluate-pull-request-approval-rules返回的evaluation.overridden将变为true表示审批规则要求已不再需要被满足。从服务模型来看覆盖操作同样需要pullRequestId与revisionId两个必填参数见服务模型中OverridePullRequestApprovalRules相关输入形状位于 service-2.json 的Overridden与ApprovalRuleOverriddenEventMetadata定义附近并会记录覆盖事件元数据。七、在合并流程中的实践建议结合本仓库中 codecommit 示例目录awscli/examples/codecommit/下的合并相关示例推荐的工作流是创建/关联审批规则使用create-pull-request-approval-rule或审批规则模板associate-approval-rule-template-with-repository为拉取请求挂载规则审批审批人使用update-pull-request-approval-state提交批准或拒绝意见评估合并前调用evaluate-pull-request-approval-rules检查approved是否满足、approvalRulesNotSatisfied是否为空、overridden是否为true合并条件满足后根据目标分支策略选择merge-pull-request-by-fast-forward、merge-pull-request-by-squash或merge-pull-request-by-three-way完成合并。在编写自动化脚本时可以对命令输出进行结构化查询例如aws codecommit evaluate-pull-request-approval-rules \ --pull-request-id 27 \ --revision-id 9f29d167EXAMPLE \ --query evaluation.approved \ --output text返回true表示审批规则已全部满足返回false则需要继续等待审批或考虑覆盖操作。八、小结evaluate-pull-request-approval-rules是 CodeCommit 拉取请求治理中合并前最后一道闸门的判定工具。通过本文你可以掌握两个必填参数--pull-request-id与--revision-id的获取方式后者来自get-pull-request返回的evaluation对象中approved、overridden、approvalRulesSatisfied、approvalRulesNotSatisfied四个字段的精确语义审批规则的创建方式create-pull-request-approval-rule与覆盖机制override-pull-request-approval-rules如何影响评估结果将评估命令嵌入自动化合并流程的脚本实践。如需深入可继续阅读仓库中的其他配套示例get-pull-request-approval-states.rst、get-pull-request-override-state.rst、update-pull-request-approval-state.rst以及完整 API 定义 CodeCommit 服务模型。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进