建立提取請求的核准規則 - AWS CodeCommit

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

建立提取請求的核准規則

建立提取請求的核准規則會要求使用者核准提取請求,然後程式碼才能合併到目的地分支,有助於確保程式碼的品質。您可以指定必須核准提取請求的使用者數目。您也可以為規則指定使用者核准集區。如果您這麼做,則只有來自這些使用者的核准才計入規則所需的核准數目中。

注意

您也可以建立核准規則範本,以協助您跨儲存庫 (適用於每個提取請求的核准規則) 的建立核准規則。如需詳細資訊,請參閱 使用核准規則範本

您可以使用 AWS CodeCommit 主控台或 AWS CLI 來為儲存庫建立分支。

建立提取請求的核准規則 (主控台)

您可以使用 CodeCommit 主控台,建立核准規則 CodeCommit 儲存庫。

  1. 開啟 CodeCommit 主控台https://console.aws.amazon.com/codesuite/codecommit/home

  2. Repositories (儲存庫) 中,選擇您要為提取請求建立核准規則的儲存庫名稱。

  3. 在導覽窗格中,選擇 Pull requests (提取請求)

  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 使用者名稱或假定角色:此選項會預先填入AWS帳戶 ID 與您用來登錄的帳戶,只需要一個名稱。對於名稱符合所提供名稱的 IAM 使用者和聯合存取使用者,可使用此選項。此選項非常強大,提供很大的靈活性。例如,如果您使用 Amazon Web Services 帳戶 123456789012 登入並選擇此選項,而且指定Mary_Major,以下全部算作來自該使用者的核准:

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

      • 在 IAM 中識別為 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 Resource Name (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 識別碼

    注意

    核准規則不支援跨帳戶核准。

  8. 核准規則設定完成後,請選擇 Submit (提交)

建立提取請求的核准規則 (AWS CLI)

使用AWS CLI使用指令 CodeCommit,安裝AWS 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 中識別為 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 Resource Name (ARN)。

    如需 IAM ARN、萬用字元和格式的詳細資訊,請參閱IAM 識別碼

    下列範例建立名為的核准規則Require two approved approvers適用於 ID 為的提取請求27。此規則指定需要有來自核准集區的兩個核准。集區包括所有存取的使用者 CodeCommit 並承擔的作用CodeCommitReview中的123456789012Amazon Web Services 帳戶。還包括名為的 IAM 使用者或聯合身分使用者Nikhil_Jayashankar在同一 Amazon Web Services 帳戶:

    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" } }