提取請求評論核准 - AWS CodeBuild

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

提取請求評論核准

CodeBuild 支援提取請求建置政策,可對提取請求觸發的建置提供額外的控制。您可能不想自動建立來自未知使用者的提取請求,直到可以檢閱變更為止。此功能可讓您要求其中一位團隊成員先檢閱程式碼,然後執行管道。在建置未知參與者提交的程式碼時,這通常用作安全措施。

提取請求建置政策可讓您根據參與者的許可和核准狀態,控制 CodeBuild 何時觸發提取請求的建置。這對接受外部協作者貢獻的公有儲存庫或儲存庫來說特別重要。

啟用時,此功能可確保只有在下列任一情況下才會針對提取請求觸發組建:

  • 提取請求是由信任的貢獻者建立。

  • 信任的貢獻者會透過張貼特定註解來核准提取請求。

運作方式

信任的貢獻者

信任的貢獻者是在來源控制系統中目前角色的使用者,會在提取請求型政策中設定為核准者角色。當信任的貢獻者建立提取請求時,CodeBuild 會自動觸發建置,以維護目前的行為。

不受信任的貢獻者

不受信任的貢獻者是未在核准者角色清單中設定角色的使用者。當不受信任的貢獻建立提取請求時:

  1. CodeBuild 會將建置狀態標記為「失敗」,並顯示「啟動建置所需的提取請求核准」訊息。

  2. 信任的貢獻者必須檢閱變更,並發佈評論給 /codebuild_run(<SHA_OF_THE_LATEST_COMMIT>)以觸發建置。例如 /codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369)

  3. CodeBuild 驗證評論者的許可,並在核准時觸發組建。

  4. 組建結果會在提取請求頁面上回報。

註解核准語法

信任的貢獻者可以使用下列評論格式核准組建:

  • /codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369) - 根據指定的遞交 SHA 觸發建置。

組態

預設行為

預設會為所有新建立的 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 的提取請求建置政策,請使用 CreateWebhookUpdateWebhook 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 事件:

  1. 對於註解核准,請針對所有提取請求 (ALL_PULL_REQUEST) 選取停用或啟用,或僅針對叉 () 的提取請求FORK_PULL_REQUEST選取。

  2. 對於核准者角色,選取在需要評論核准時具有提取請求組建核准權限的儲存庫角色。

如需詳細資訊,請參閱 CodeBuild API 參考中的 建立組建專案 (主控台)WebhookFilter

具有註解核准的主要來源 Webhook 事件主控台。