本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
提取請求評論核准
CodeBuild 支援提取請求建置政策,可對提取請求觸發的建置提供額外的控制。您可能不想自動建立來自未知使用者的提取請求,直到可以檢閱變更為止。此功能可讓您要求其中一位團隊成員先檢閱程式碼,然後執行管道。在建置未知參與者提交的程式碼時,這通常用作安全措施。
提取請求建置政策可讓您根據參與者的許可和核准狀態,控制 CodeBuild 何時觸發提取請求的建置。這對接受外部協作者貢獻的公有儲存庫或儲存庫來說特別重要。
啟用時,此功能可確保只有在下列任一情況下才會針對提取請求觸發組建:
-
提取請求是由信任的貢獻者建立。
-
信任的貢獻者會透過張貼特定註解來核准提取請求。
運作方式
- 信任的貢獻者
-
信任的貢獻者是在來源控制系統中目前角色的使用者,會在提取請求型政策中設定為核准者角色。當信任的貢獻者建立提取請求時,CodeBuild 會自動觸發建置,以維護目前的行為。
- 不受信任的貢獻者
-
不受信任的貢獻者是未在核准者角色清單中設定角色的使用者。當不受信任的貢獻建立提取請求時:
-
CodeBuild 會將建置狀態標記為「失敗」,並顯示「啟動建置所需的提取請求核准」訊息。
-
信任的貢獻者必須檢閱變更,並發佈評論給
/codebuild_run(
以觸發建置。例如<SHA_OF_THE_LATEST_COMMIT>
)/codebuild_run(
。046e8b67481d53bdc86c3f6affdd5d1afae6d369
) -
CodeBuild 驗證評論者的許可,並在核准時觸發組建。
-
組建結果會在提取請求頁面上回報。
-
- 註解核准語法
-
信任的貢獻者可以使用下列評論格式核准組建:
-
/codebuild_run(
- 根據指定的遞交 SHA 觸發建置。046e8b67481d53bdc86c3f6affdd5d1afae6d369
)
-
組態
- 預設行為
-
預設會為所有新建立的 CodeBuild 專案啟用提取請求建置政策。
- API 參數
-
提取請求建置政策是在下列動作中使用
PullRequestBuildPolicy
參數設定:-
CreateWebhook
-
UpdateWebhook
-
PullRequestBuildPolicy
結構-
{ "requiresCommentApproval": "string", "approverRoles": ["string", ...] }
requiresCommentApproval
-
指定在觸發提取請求建置之前,何時需要以註解為基礎的核准。此設定會決定建置是否自動執行,或是否需要透過註解明確核准。
類型:字串
有效值:
-
DISABLED
- 自動建置觸發程序,而不需要註解核准。 -
FORK_PULL_REQUESTS
- 僅從叉儲存庫提取請求需要評論核准 (除非參與者是核准者角色之一)。 -
ALL_PULL_REQUESTS
- 所有提取請求都需要註解核准才能執行組建 (除非參與者是核准者角色之一)。這是預設值。
-
approverRoles
-
需要評論核准時,具有提取請求組建核准權限的儲存庫角色清單。只有具有這些角色的使用者才能提供有效的評論核准。如果提取請求參與者是這些角色之一,其提取請求建置將自動觸發。
類型:字串陣列
GitHub 專案的有效值 (這些值會映射至 GitHub 角色):
-
GITHUB_ADMIN
- 儲存庫管理員 -
GITHUB_MAINTAIN
- 儲存庫維護程式 -
GITHUB_WRITE
- 具有寫入許可的使用者 -
GITHUB_TRIAGE
- 具有分類許可的使用者 -
GITHUB_READ
- 具有讀取許可的使用者 -
預設:
["GITHUB_ADMIN", "GITHUB_MAINTAINER", "GITHUB_WRITE"]
GitLab 專案的有效值 (這些值對應至 GitLab 角色):
-
GITLAB_OWNER
- 儲存庫擁有者 -
GITLAB_MAINTAINER
- 儲存庫維護器 -
GITLAB_DEVELOPER
- 具有開發人員許可的使用者 -
GITLAB_REPORTER
- 具有報告者許可的使用者 -
GITLAB_PLANNER
- 具有規劃器許可的使用者 -
GITLAB_GUEST
- 具有訪客許可的使用者 -
預設:
["GITLAB_OWNER", "GITLAB_MAINTAINER", "GITLAB_DEVELOPER"]
Bitbucket 專案的有效值 (這些值對應至 Bitbucket 角色):
-
BITBUCKET_ADMIN
- 儲存庫管理員 -
BITBUCKET_WRITE
- 具有寫入許可的使用者 -
BITBUCKET_READ
- 具有讀取許可的使用者 -
預設:
["BITBUCKET_ADMIN", "BITBUCKET_WRITE"]
-
範例
- 為所有提取請求啟用註解核准
-
若要使用 AWS CodeBuild SDK 啟用或停用 Webhook 的提取請求建置政策,請使用
CreateWebhook
或UpdateWebhook
API 方法請求語法中的pullRequestBuildPolicy
欄位。如需詳細資訊,請參閱 CodeBuild API 參考中的 WebhookFilter。具有 Github 角色的使用者管理、維護和寫入將被視為信任的貢獻者。
"pullRequestBuildPolicy": { "requiresCommentApproval": "ALL_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAIN", "GITHUB_WRITE"] }
- 僅對儲存庫管理員和維護程式啟用評論核准
-
具有 GitHub 角色的使用者 Admin, Maintain 將被視為信任的貢獻者。
"pullRequestBuildPolicy": { "requiresCommentApproval": "FORK_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAINER"] }
- 停用註解核准
-
"pullRequestBuildPolicy": { "requiresCommentApproval": "DISABLED" }
AWS CloudFormation
若要使用 an AWS CloudFormation 範本啟用或停用 Webhook 的提取請求建置政策,請使用 PullRequestBuildPolicy 屬性。下列 an AWS CloudFormation 範本的 YAML 格式部分會建立具有 Webhook 的專案,該 Webhook 已為所有提取請求啟用提取請求建置政策。維護和管理指定為核准者的 角色。
CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: BITBUCKET Location: source-location Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED - Type: BASE_REF Pattern: ^refs/heads/main$ ExcludeMatchedPattern: false PullRequestBuildPolicy: RequiresCommentApproval: ALL_PULL_REQUESTS ApproverRoles: - GITHUB_MAINTAIN - GITHUB_ADMIN
主控台組態
若要使用 AWS 管理主控台篩選 Webhook 事件:
-
對於註解核准,請針對所有提取請求 (
ALL_PULL_REQUEST
) 選取停用或啟用,或僅針對叉 () 的提取請求FORK_PULL_REQUEST
選取。 -
對於核准者角色,選取在需要評論核准時具有提取請求組建核准權限的儲存庫角色。
如需詳細資訊,請參閱 CodeBuild API 參考中的 建立組建專案 (主控台)和 WebhookFilter。
