Aprobación de comentarios de solicitudes de extracción - AWS CodeBuild

Aprobación de comentarios de solicitudes de extracción

CodeBuild admite políticas de compilación de solicitudes de extracción que proporcionan control adicional sobre las compilaciones desencadenas por solicitudes de extracción. No conviene compilar automáticamente solicitudes de extracción de usuarios desconocidos hasta que se puedan revisar sus cambios. Esta característica permite solicitar a uno de los miembros del equipo que primero revise el código y, a continuación, ejecute la canalización. Esta medida se suele utilizar por seguridad cuando se compila un código enviado por colaboradores desconocidos.

Las políticas de compilación de solicitudes de extracción permiten controlar cuándo desencadena CodeBuild compilaciones de solicitudes de extracción basadas en los permisos y el estado de aprobación del colaborador. Esto es algo particularmente importante en los repositorios públicos o los repositorios que aceptan contribuciones de colaboradores externos.

Cuando está habilitada, esta característica garantiza que las compilaciones solo se desencadenen para solicitudes de extracción cuando:

  • La solicitud de extracción la crea un colaborador de confianza.

  • Un colaborador de confianza aprueba la solicitud de extracción publicando un comentario específico.

Funcionamiento

Colaboradores de confianza

El colaborador de confianza es un usuario cuyo rol actual en el sistema de control de código fuente está establecido en la política basada en solicitudes de extracción como roles de aprobador. Cuando un colaborador de confianza crea una solicitud de extracción, CodeBuild desencadena la compilación automáticamente, manteniendo el comportamiento actual.

Colaboradores que no son de confianza

Un colaborador que no es de confianza es un usuario cuyo rol no está establecido en la lista de roles de aprobador. Cuando un colaborador que no es de confianza crea una solicitud de extracción:

  1. CodeBuild marca el estado de compilación como “Error” con el mensaje “Pull request approval required for starting a build”.

  2. Un colaborador de confianza debe revisar los cambios y publicar un comentario con /codebuild_run(<SHA_OF_THE_LATEST_COMMIT>) para desencadenar la compilación. Por ejemplo, /codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369).

  3. CodeBuild valida los permisos del usuario que hizo los comentarios y desencadena la compilación si se aprueba.

  4. Los resultados de la compilación se devuelven a la página de solicitudes de extracción.

Sintaxis de aprobación de comentarios

Los colaboradores de confianza pueden aprobar compilaciones mediante los siguientes formatos de comentario:

  • /codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369): desencadena la compilación en el SHA de confirmación especificado.

Configuración

Comportamiento predeterminado

La política de compilación de solicitudes de extracción está habilitada de forma predeterminada para todos los proyectos de CodeBuild recién creados.

Parámetros de la API

La política de compilación de solicitudes de extracción se configura mediante el parámetro PullRequestBuildPolicy en las siguientes acciones:

  • CreateWebhook

  • UpdateWebhook

Estructura de PullRequestBuildPolicy
{ "requiresCommentApproval": "string", "approverRoles": ["string", ...] }
requiresCommentApproval

Especifica cuándo se requiere aprobación basada en comentarios antes de desencadenar una compilación a partir de solicitudes de extracción. Esta configuración determina si las compilaciones se ejecutan automáticamente o si requieren una aprobación explícita mediante comentarios.

Tipo: cadena

Valores válidos:

  • DISABLED: las compilaciones se desencadenan automáticamente sin requerir aprobación de comentarios.

  • FORK_PULL_REQUESTS: solo las solicitudes de extracción de repositorios bifurcados requieren aprobación de comentarios (a menos que colaborador sea uno de los roles de aprobador).

  • ALL_PULL_REQUESTS: todas las solicitudes de extracción requieren aprobación de comentarios antes de ejecutar compilaciones (a menos que colaborador sea uno de los roles de aprobador). Este es el valor predeterminado.

approverRoles

Lista de roles de repositorio que tienen privilegios de aprobación para compilaciones de solicitudes de extracción cuando se requiere aprobación de comentarios. Solo los usuarios con estos roles pueden proporcionar aprobaciones de comentarios válidas. Si un colaborador de solicitudes de extracción tiene uno de estos roles, las compilaciones de solicitudes de extracción se desencadenarán automáticamente.

Tipo: matriz de cadenas

Valores válidos para proyectos de GitHub (los valores se asignan a roles de GitHub):

  • GITHUB_ADMIN: administradores del repositorio

  • GITHUB_MAINTAIN: mantenedores del repositorio

  • GITHUB_WRITE: usuario con permisos de escritura

  • GITHUB_TRIAGE: usuario con permisos de clasificación

  • GITHUB_READ: usuario con permisos de lectura

  • Valor predeterminado: ["GITHUB_ADMIN", "GITHUB_MAINTAINER", "GITHUB_WRITE"]

Valores válidos para proyectos de GitLab (los valores se asignan a roles de GitLab):

  • GITLAB_OWNER: propietario del repositorio

  • GITLAB_MAINTAINER: mantenedor del repositorio

  • GITLAB_DEVELOPER: usuario con permisos de desarrollador

  • GITLAB_REPORTER: usuario con permisos de informador

  • GITLAB_PLANNER: usuario con permisos de planificador

  • GITLAB_GUEST : usuario con permisos de invitado

  • Valor predeterminado: ["GITLAB_OWNER", "GITLAB_MAINTAINER", "GITLAB_DEVELOPER"]

Valores válidos para proyectos de Bitbucket (los valores se asignan a roles de Bitbucket):

  • BITBUCKET_ADMIN : administrador del repositorio

  • BITBUCKET_WRITE: usuario con permisos de escritura

  • BITBUCKET_READ : usuario con permisos de lectura

  • Valor predeterminado: ["BITBUCKET_ADMIN", "BITBUCKET_WRITE"]

Ejemplos

Habilitación de aprobación de comentarios para todas las solicitudes de extracción

Si desea utilizar el AWS CodeBuild SDK para habilitar o deshabilitar la política de compilación de solicitudes de extracción para un webhook, utilice el campo pullRequestBuildPolicy en la sintaxis de solicitud de los métodos CreateWebhook o UpdateWebhook de la API. Para obtener más información, consulte WebhookFilter en la Referencia de la API de CodeBuild.

Los usuarios con roles de administrador, mantenimiento y escritura de Github serán considerados colaboradores de confianza.

"pullRequestBuildPolicy": { "requiresCommentApproval": "ALL_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAIN", "GITHUB_WRITE"] }
Habilitación de la aprobación de comentarios solo para administradores y mantenedores de repositorios

Los usuarios con roles de administrador y mantenimiento de GitHub serán considerados colaboradores de confianza.

"pullRequestBuildPolicy": { "requiresCommentApproval": "FORK_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAINER"] }
Deshabilitación de la aprobación de comentarios
"pullRequestBuildPolicy": { "requiresCommentApproval": "DISABLED" }

AWS CloudFormation

Si desea utilizar una plantilla de AWS CloudFormation para habilitar o deshabilitar la política de compilación de solicitudes de extracción para un webhook, utilice la propiedad PullRequestBuildPolicy. La siguiente parte con formato YAML de una plantilla de AWS CloudFormation crea un proyecto con un webhook que tiene habilitada la política de compilación de solicitudes de extracción para todas las solicitudes de extracción. Roles de mantenimiento y administración especificados como aprobadores.

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

Configuración de la consola

Cómo utilizar la consola de administración de AWS para filtrar eventos de webhook:

  1. En Aprobación de comentarios, seleccione deshabilitado o habilitado para todas las solicitudes de extracción (ALL_PULL_REQUEST) o solo para las solicitudes de extracción de bifurcaciones (FORK_PULL_REQUEST).

  2. En Roles de aprobador, seleccione los roles de repositorio que tengan privilegios de aprobación para compilaciones de solicitudes de extracción cuando se requiera aprobación de comentarios.

Para obtener más información, consulte Creación de un proyecto de compilación (consola) y WebhookFilter en la Referencia de la API de CodeBuild.

Consola de eventos de webhook de código fuente principal con aprobación de comentarios.