建立核准規則範本 - AWS CodeCommit

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立核准規則範本

您可以建立一或多個核准規則範本,以協助您自訂跨儲存庫的開發工作流程。您可以建立多個範本,以設定自動建立核准規則,讓不同分支具有適當等級的核准和控制。例如,您可以為生產和開發分支建立不同的範本,並將這些範本套用至一或多個儲存庫。當使用者在這些儲存庫中建立提取請求時,將根據這些範本來評估請求。如果請求符合所套用範本中的條件,則會為提取請求建立核准規則。

您可以使用主控台或 AWS CLI 建立核准規則範本。如需有關核准規則範本的受管理原則和權限的詳細資訊,請參閱核准規則範本動作的權限AWS 受管理的政策 CodeCommit

建立核准規則範本 (主控台)

依預設,核准規則範本不會與任何儲存庫相關聯。您可以在建立範本時建立範本與一或多個儲存庫之間的關聯,或者稍後再新增關聯。

建立核准規則範本 (主控台)

  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 中識別為瑪麗 () 的聯合身分使用者 (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)。此選項也可支援其他 AWS 服務所使用的擔任角色,例如 AWS Lambda 和 AWS 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. (選擇性) 在關聯的儲存庫的儲存庫清單中,選擇您要與AWS 區域此核准規則產生關聯的儲存庫。

    注意

    您可以選擇在建立範本之後建立儲存庫的關聯。如需詳細資訊,請參閱建立核准規則範本與儲存器的關聯

  9. 選擇 Create (建立)。

一種核准規則範本,如果在名為 main 的分支上建立拉取請求 (與兩個儲存庫相關聯),則需要定義的核准規則中的 1 名核准者

建立核准規則範本 (AWS CLI)

您可以使用 AWS CLI 來建立核准規則範本。使用 AWS CLI 時,您可以指定範本的目的地參考,只在提取請求的目的地分支符合範本中的目的地分支時,才套用範本。

建立核准規則範本 (AWS CLI)

  1. 在終端機或命令列,執行 create-approval-rule-template 命令,並指定:

    • 核准規則範本的名稱。考慮使用能描述用途的名稱。

    • 核准規則範本的描述。與名稱一樣,請考慮提供詳細的描述。

    • 核准規則範本的 JSON 結構。此結構可包含目的地參考的需求 (套用核准規則之提取請求的目的地分支),以及核准集區成員 (核准計入所需核准數目中的使用者)。

    建立核准規則的內容時,您有兩種方式在核准集區中指定核准者:

    • CodeCommitApprovers:此選項僅需要 Amazon Web Services 帳戶和資源。它可用於名稱與提供的資源名稱相符的 IAM 使用者和聯合存取使用者。此選項非常強大,提供很大的靈活性。例如,如果您指定AWS帳戶 123456789012Mary_Major,並且以下所有項目都會計為來自該使用者的核准:

      • 帳戶中的 IAM 使用者 (arn:aws:iam::123456789012:user/Mary_Major)

      • 在 IAM 中識別為瑪麗 () 的聯合身分使用者 (arn:aws:sts::123456789012:federated-user/Mary_Major)

      除非您包含萬用字元 (),否則此選項無法辨識假定角色為 Mary_Maj or (arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major) 角色工作階段名稱的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" } }