プルリクエストコメントの承認 - AWS CodeBuild

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

プルリクエストコメントの承認

CodeBuild は、プルリクエストによってトリガーされるビルドをさらに制御するプルリクエストビルドポリシーをサポートしています。不明なユーザーからのプルリクエストは、変更がレビューできるようになるまで自動的に構築したくない場合があります。この機能を使用すると、チームメンバーの 1 人に、まずコードを確認してからパイプラインを実行するよう要求できます。これは一般的に、不明な寄稿者から送信されたコードを構築する際のセキュリティ対策として使用されます。

プルリクエストビルドポリシーを使用すると、コントリビューターのアクセス許可と承認ステータスに基づいて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 - 分岐リポジトリからのプルリクエストのみがコメントの承認を必要とします (コントリビューターが承認者ロールの 1 つでない限り)。

  • ALL_PULL_REQUESTS - すべてのプルリクエストには、ビルドの実行前にコメントの承認が必要です (コントリビューターが承認者ロールの 1 つである場合を除く)。これは、デフォルト値です。

approverRoles

コメントの承認が必要な場合にプルリクエストビルドの承認権限を持つリポジトリロールのリスト。これらのロールを持つユーザーのみが有効なコメント承認を提供できます。プルリクエストコントリビューターがこれらのロールの 1 つである場合、そのプルリクエストビルドは自動的にトリガーされます。

型: 文字列の配列

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 を使用してウェブフックのプルリクエストビルドポリシーを有効または無効にするには、 CreateWebhook または UpdateWebhook API メソッドのリクエスト構文で pullRequestBuildPolicyフィールドを使用します。詳細については、CodeBuild API リファレンスの「WebhookFilter」を参照してください。

Github ロール Admin、Maintain、Write を持つユーザーは、信頼できる寄稿者として扱われます。

"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

AWS CloudFormation テンプレートを使用してウェブフックのプルリクエストビルドポリシーを有効または無効にするには、PullRequestBuildPolicy プロパティを使用します。 AWS CloudFormation テンプレートの次の YAML 形式の部分は、すべてのプルリクエストに対してプルリクエストビルドポリシーが有効になっているウェブフックを持つプロジェクトを作成します。承認者として指定された ロールと 管理者ロールを維持します。

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 マネジメントコンソールを使用してウェブフックイベントをフィルタリングするには:

  1. コメントの承認では、すべてのプルリクエスト (ALL_PULL_REQUEST) に対して無効または有効、またはフォークからのプルリクエスト () に対してのみ有効を選択しますFORK_PULL_REQUEST

  2. 承認者ロールでは、コメントの承認が必要な場合にプルリクエストビルドの承認権限を持つリポジトリロールを選択します。

詳細については、CodeBuild API リファレンスビルドプロジェクトの作成 (コンソール)「」とWebhookFilter」を参照してください。

コメント承認付きのプライマリソースウェブフックイベントコンソール。