为拉取请求创建审批规则 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为拉取请求创建审批规则

为拉取请求创建审批规则,要求用户在将代码合并到目标分支之前对拉取请求进行审批,从而有助于确保代码的质量。您可以指定必须审批拉取请求的用户数量。您还可以为规则指定用户审批池。如果这样做,则只有这些用户的审批计入规则的所需审批数量。

注意

您还可以创建审批规则模板,帮助您跨存储库自动创建要应用于每个拉取请求的审批规则。有关更多信息,请参阅使用审批规则模板

您可以使用 Amazon CodeCommit 控制台或 Amazon CLI 为存储库创建审批规则。

为拉取请求创建审批规则(控制台)

您可以使用 CodeCommit 控制台为 CodeCommit 存储库中的拉取请求创建审批规则。

  1. 打开 CodeCommit 控制台:https://console.aws.amazon.com/codesuite/codecommit/home

  2. Repositories (存储库) 中,选择要在其中为拉取请求创建审批规则的存储库的名称。

  3. 在导航窗格中,选择拉取请求

  4. 从列表中选择要为其创建审批规则的拉取请求。您只能为处于打开状态的拉取请求创建审批规则。

    
      CodeCommit 控制台中存储库的拉取请求列表。
  5. 在拉取请求中,选择 Approvals (审批),然后选择 Create approval rule (创建审批规则)

  6. Rule name (规则名称) 中,为规则指定一个描述性名称,以便您知道其用途。例如,如果您希望拉取请求在合并之前,必须由两人对其进行审批,那么可以将该规则命名为 Require two approvals before merge

    注意

    审批规则在创建之后,其名称无法更改。

    Number of approvals needed (需要的审批数量) 中,输入所需的数量。默认值为 1。

    
      为拉取请求创建审批规则
  7. (可选)如果您希望必须由特定用户组对拉取请求进行审批,那么可以在 Approval rule members (审批规则成员) 中,选择 Add (添加)。在 Approver type (审批人类型) 中,选择以下选项之一:

    • IAM 用户名或代入的角色:此选项会预先填入您用于登录的账户的 Amazon 账户 ID,并且只需要一个名称。它可以用于 IAM 用户,以及名称与所提供名称相匹配的联合访问用户。这是一个非常强大的选项,提供了极大的灵活性。例如,如果您使用 Amazon Web Services 账户 123456789012 登录并选择了此选项,而且指定了 Mary_Major,那么以下所有用户都将计为来自该用户的审批:

      • 账户中的 IAM 用户 (arn:aws:iam::123456789012:user/Mary_Major)

      • 在 IAM 中标识为 Mary_Major 的联合用户 (arn:aws:sts::123456789012:federated-user/Mary_Major)

      除非包含通配符 (*Mary_Major),否则此选项无法识别代入 CodeCommitReview 角色且角色会话名称为 Mary_Major (arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major) 的某人的活动会话。您还可以显式指定角色名称 (CodeCommitReview/Mary_Major)。

    • 完全限定的 ARN:此选项允许您指定 IAM 用户或角色的完全限定 Amazon 资源名称 (ARN)。此选项还支持由其他 Amazon 服务(如 Amazon Lambda 和 Amazon CodeBuild)使用的代入角色。对于代入的角色,ARN 格式应为 arn:aws:sts::AccountID:assumed-role/RoleName(适用于角色)和 arn:aws:sts::AccountID:assumed-role/FunctionName(适用于函数)。

    如果选择 IAM 用户名或代入的角色作为审批人类型,那么请在中输入 IAM 用户或角色的名称,或者输入用户或角色的完全限定 ARN。再次选择 Add (添加) 可添加多个用户或角色,直到您已添加了其审批计入所需审批数量的所有用户或角色。

    这两种审批人类型都允许在其值中使用通配符 (*)。例如,如果选择 IAM 用户名或代入的角色选项,并且指定 CodeCommitReview/*,那么代入 CodeCommitReview 角色的所有用户都将计入审批池中。他们各自的角色会话名称将计入所需的审批人数量。按照此方法,Mary_Major 和 Li_Juan 在登录并代入 CodeCommitReview 角色时,都计为审批。有关 IAM ARN、通配符和格式的更多信息,请参阅 IAM 标识符

    注意

    审批规则不支持跨账户审批。

  8. 完成审批规则的配置之后,选择 Submit (提交)

为拉取请求创建审批规则 (Amazon CLI)

要使用 Amazon CLI 命令操作 CodeCommit,请安装 Amazon CLI。有关更多信息,请参阅命令行参考

为 CodeCommit 存储库中的拉取请求创建审批规则

  1. 运行 create-pull-request-approval-rule 命令,并指定:

    • 拉取请求的 ID(使用 --id 选项)。

    • 审批规则的名称(使用 --approval-rule-name 选项)。

    • 审批规则的内容(使用 --approval-rule-content 选项)。

    创建审批规则时,可以按照以下两种方式之一指定审批池中的审批人:

    • CodeCommitApprovers:此选项仅需要 Amazon Web Services 账户和资源。它可以用于 IAM 用户,以及名称与所提供资源名称相匹配的联合访问用户。这是一个非常强大的选项,提供了极大的灵活性。例如,如果指定 Amazon Web Services 账户 123456789012 和 Mary_Major,那么以下所有用户都将计为来自该用户的审批:

      • 账户中的 IAM 用户 (arn:aws:iam::123456789012:user/Mary_Major)

      • 在 IAM 中标识为 Mary_Major 的联合用户 (arn:aws:sts::123456789012:federated-user/Mary_Major)

      除非包含通配符 (*Mary_Major),否则此选项无法识别代入 CodeCommitReview 角色且角色会话名称为 Mary_Major (arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major) 的某人的活动会话。

    • 完全限定的 ARN:此选项允许您指定 IAM 用户或角色的完全限定 Amazon 资源名称 (ARN)。

    有关 IAM ARN、通配符和格式的更多信息,请参阅 IAM 标识符

    以下示例为 ID 为 27 的拉取请求创建名为 Require two approved approvers 的审批规则。该规则指定审批池中需要两个审批。池中包括 123456789012 Amazon Web Services 账户中访问 CodeCommit 并代入 CodeCommitReview 角色的所有用户,还包括同一 Amazon Web Services 账户中的 IAM 用户或名为 Nikhil_Jayashankar 的联合用户:

    aws codecommit create-pull-request-approval-rule --pull-request-id 27 --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/*\"]}]}"
  2. 如果成功,该命令产生类似以下内容的输出:

    { "approvalRule": { "approvalRuleName": "Require two approved approvers", "lastModifiedDate": 1570752871.932, "ruleContentSha256": "7c44e6ebEXAMPLE", "creationDate": 1570752871.932, "approvalRuleId": "aac33506-EXAMPLE", "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"CodeCommitApprovers:123456789012:Nikhil_Jayashankar\", \"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major" } }