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

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

创建审批规则模板

您可以创建一个或多个审批规则模板,以帮助自定义跨存储库的开发工作流程。通过创建多个模板,您可以配置自动创建审批规则,以便不同分支拥有适当的审批和控制级别。例如,您可以为生产和开发分支创建不同模板,并将这些模板应用到一个或多个存储库。当用户在这些存储库中创建拉取请求时,将根据这些模板对请求进行评估。如果请求与所应用模板中的条件匹配,则会为该拉取请求创建审批规则。

您可以使用控制台或 Amazon CLI 创建审批规则模板。有关托管策略和审批规则模板权限的更多信息,请参阅针对审批规则模板的操作所需的权限适用于 CodeCommit 的 Amazon 托管式策略

创建审批规则模板(控制台)

默认情况下,审批规则模板不与任何存储库关联。您可以在创建模板时,在模板与一个或多个存储库之间建立关联,也可以之后再添加关联。

创建审批规则模板(控制台)

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

  2. 选择 Approval rule templates (审批规则模板),然后选择 Create template (创建模板)

  3. Approval rule template name (审批规则模板名称) 中,为模板指定一个描述性名称,以便您知道其用途。例如,如果您希望拉取请求在合并之前,必须由一组高级开发人员中的一位对其进行审批,那么可以将该规则命名为 Require 1 approver from a senior developer

  4. (可选)在 Description (描述) 中,提供有关此模板用途的描述。这可以帮助其他人决定此模板是否适合其存储库。

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

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

    • IAM 用户名或代入的角色:此选项会预先填入您用于登录的账户的 Amazon Web Services 账户 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 标识符

    注意

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

  7. (可选)在 Branch filters (分支筛选条件) 中,输入要用于筛选审批规则创建的目标分支名称。例如,如果指定 main,那么仅当拉取请求的目标分支名为 main 时,才会为关联存储库中的该拉取请求创建审批规则。您可以在分支名称中使用通配符 (*),将审批规则应用于名称与通配符匹配的所有分支。不过,通配符不能用在分支名称的开头。最多可指定 100 个分支名称。如果未指定任何筛选条件,则模板将应用于关联存储库中的所有分支。

  8. (可选)在已关联的存储库中,在存储库列表中,选择要与审批规则关联的此 Amazon Web Services 区域中的存储库。

    注意

    您可以选择在创建模板后关联存储库。有关更多信息,请参阅将审批规则模板与存储库关联

  9. 选择 Create(创建)。


                    与两个存储库关联的审批规则模板,如果在名为“main”的分支上创建了拉取请求,则需要已定义的审批规则中的 1 位审批人

创建审批规则模板 (Amazon CLI)

您可以使用 Amazon CLI 创建审批规则模板。使用 Amazon CLI 时,可以为模板指定目标引用,以便模板仅适用于其目标分支与模板中的目标分支匹配的拉取请求。

创建审批规则模板 (Amazon CLI)

  1. 在终端或命令行中,运行 create-approval-rule-template 命令,并指定:

    • 审批规则模板的名称。请考虑使用可描述其用途的名称。

    • 审批规则模板的描述。与名称一样,请考虑提供详细说明。

    • 审批规则模板的 JSON 结构。此结构可包括对目标引用的要求,即要对其应用审批规则的拉取请求的目标分支,以及审批池成员,即其审批将计入所需审批数量的用户。

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

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

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

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

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

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

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

    以下示例创建名为 2-approver-rule-for-main 的审批规则模板,且其描述为 Requires two developers from the team to approve the pull request if the destination branch is main。模板需要两个代入 CodeCommitReview 角色的用户,在任何拉取请求合并到 main 分支之前对其进行审批:

    aws codecommit create-approval-rule-template --approval-rule-template-name 2-approver-rule-for-main --approval-rule-template-description "Requires two developers from the team to approve the pull request if the destination branch is main" --approval-rule-template-content "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}"
  2. 如果成功,该命令返回类似以下内容的输出:

    { "approvalRuleTemplate": { "approvalRuleTemplateName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "approvalRuleTemplateDescription": "Requires two developers from the team to approve the pull request if the destination branch is main", "lastModifiedDate": 1571356106.936, "ruleContentSha256": "4711b576EXAMPLE" } }