Aprovação de comentários da solicitação pull
O CodeBuild permite o uso de políticas de criação de solicitação pull que oferecem controle adicional sobre as compilações acionadas por essas solicitações. Não é recomendável criar automaticamente solicitações pull de usuários desconhecidos até que as alterações possam ser revisadas. Esse recurso permite exigir que um dos membros da equipe primeiro revise o código e depois execute o pipeline. Isso geralmente é usado como uma medida de segurança ao criar um código enviado por colaboradores desconhecidos.
As políticas de compilação de solicitação pull permitem controlar quando o CodeBuild deve acionar compilações para essas solicitações com base nas permissões e no status de aprovação do colaborador. Isso é importante principalmente para repositórios públicos ou que aceitam contribuições de colaboradores externos.
Quando habilitado, esse recurso garante que as compilações sejam acionadas para solicitações pull somente quando:
-
A solicitação pull é criada por um colaborador confiável.
-
Um colaborador confiável aprova a solicitação pull publicando um comentário específico.
Como funciona
- Colaboradores confiáveis
-
Colaborador confiável é um usuário cujo perfil atual no sistema de controle de origem está definido na política baseada em solicitação pull como um perfil de aprovador. Quando um colaborador confiável cria uma solicitação pull, o CodeBuild aciona a compilação automaticamente, mantendo o comportamento atual.
- Colaboradores não confiáveis
-
Colaborador não confiável é um usuário cujo perfil não está definido na lista de perfis de aprovador. Quando um colaborador não confiável cria uma solicitação pull:
-
O CodeBuild marca o status da compilação como “Falha” com a mensagem “É necessária a aprovação da solicitação pull para iniciar uma compilação”.
-
Um colaborador confiável deve revisar as alterações e publicar um comentário com
/codebuild_run(para acionar a compilação. Por exemplo,<SHA_OF_THE_LATEST_COMMIT>)/codebuild_run(.046e8b67481d53bdc86c3f6affdd5d1afae6d369) -
O CodeBuild valida as permissões do comentarista e aciona a compilação, se aprovada.
-
Os resultados da compilação são relatados na página da solicitação pull.
-
- Sintaxe do comentário de aprovação
-
Colaboradores confiáveis podem aprovar compilações usando os seguintes formatos de comentários:
-
/codebuild_run(: aciona a compilação no SHA de commit especificado.046e8b67481d53bdc86c3f6affdd5d1afae6d369)
-
Configuração
- Comportamento padrão
-
A política de compilação de solicitação pull está habilitada por padrão para todos os projetos recém-criados do CodeBuild.
- Parâmetros de API
-
A política de compilação de solicitação pull é configurada usando o parâmetro
PullRequestBuildPolicynas seguintes ações:-
CreateWebhook -
UpdateWebhook
-
- Estrutura de
PullRequestBuildPolicy -
{ "requiresCommentApproval": "string", "approverRoles": ["string", ...] } requiresCommentApproval-
Especifica quando a aprovação baseada em comentários é necessária antes de acionar uma compilação em solicitações pull. Essa configuração determina se as compilações devem ser executadas automaticamente ou exigir aprovação explícita por meio de comentários.
Tipo: String
Valores válidos:
-
DISABLED: as compilações são acionadas automaticamente sem exigir aprovação por comentários. -
FORK_PULL_REQUESTS: somente solicitações pull de repositórios bifurcados exigem aprovação por comentários (a menos que o colaborador seja um dos perfis de aprovador). -
ALL_PULL_REQUESTS: todas as solicitações pull exigem aprovação por comentários antes da execução das compilações (a menos que o colaborador seja um dos perfis de aprovador). Este é o valor padrão.
-
approverRoles-
Lista de perfis de repositório que têm privilégios de aprovação para compilações de solicitação pull quando a aprovação por comentários é necessária. Somente usuários com estes perfis podem conceder aprovações por comentários válidas. Se um colaborador de solicitação pull for um destes perfis, as compilações de solicitação pull serão acionadas automaticamente.
Tipo: matriz de strings
Valores válidos para projetos do GitHub (os valores são mapeados para os perfis do GitHub):
-
GITHUB_ADMIN: administradores do repositório -
GITHUB_MAINTAIN: mantenedores do repositório -
GITHUB_WRITE: usuário com permissões de gravação -
GITHUB_TRIAGE: usuário com permissões de triagem -
GITHUB_READ: usuário com permissões de leitura -
Padrão:
["GITHUB_ADMIN", "GITHUB_MAINTAINER", "GITHUB_WRITE"]
Valores válidos para projetos do GitLab (os valores são mapeados para os perfis do GitLab):
-
GITLAB_OWNER: proprietário do repositório -
GITLAB_MAINTAINER: mantenedor do repositório -
GITLAB_DEVELOPER: usuário com permissões de desenvolvedor -
GITLAB_REPORTER: usuário com permissões de relator -
GITLAB_PLANNER: usuário com permissões de planejador -
GITLAB_GUEST: usuário com permissões de convidado -
Padrão:
["GITLAB_OWNER", "GITLAB_MAINTAINER", "GITLAB_DEVELOPER"]
Valores válidos para projetos do Bitbucket (os valores são mapeados para os perfis do Bitbucket):
-
BITBUCKET_ADMIN: administrador do repositório -
BITBUCKET_WRITE: usuário com permissões de gravação -
BITBUCKET_READ: usuário com permissões de leitura -
Padrão:
["BITBUCKET_ADMIN", "BITBUCKET_WRITE"]
-
Exemplos
- Habilitar a aprovação por comentários para todas as solicitações pull
-
Para usar o AWS CodeBuild SDK a fim de habilitar ou desabilitar a política de criação de solicitação pull para um webhook, use o campo
pullRequestBuildPolicyna sintaxe da solicitação dos métodos da APICreateWebhookouUpdateWebhook. Para obter mais informações, consulte WebhookFilter na Referência da API do CodeBuild.Usuários com perfis de administração, manutenção e gravação no GitHub serão tratados como colaboradores confiáveis.
"pullRequestBuildPolicy": { "requiresCommentApproval": "ALL_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAIN", "GITHUB_WRITE"] } - Habilitar aprovação por comentários somente para administradores e mantenedores do repositório
-
Usuários com perfis de administração e manutenção no GitHub serão tratados como colaboradores confiáveis.
"pullRequestBuildPolicy": { "requiresCommentApproval": "FORK_PULL_REQUESTS", "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAINER"] } - Desabilitar aprovação por comentários
-
"pullRequestBuildPolicy": { "requiresCommentApproval": "DISABLED" }
AWS CloudFormation
Para usar um modelo do AWS CloudFormation a fim de habilitar ou desabilitar a política de criação de solicitações pull para um webhook, use a propriedade PullRequestBuildPolicy. A seguinte parte formatada em YAML de um modelo do AWS CloudFormation cria um projeto com um webhook que tem a política de compilação de solicitação pull habilitada para todas essas solicitações. Perfis de manutenção e administração são especificados como aprovadores.
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
Configuração do console
Para usar o Console de Gerenciamento da AWS para filtrar eventos de webhook:
-
Para Aprovação por comentários, selecione desabilitado ou habilitado para todas as solicitações pull requests (
ALL_PULL_REQUEST) ou somente para aquelas de bifurcação (FORK_PULL_REQUEST). -
Em Perfis de aprovador, selecione perfis do repositório que tenham privilégios de aprovação para compilações de solicitação pull quando a aprovação por comentários é necessária.
Consulte mais informações em Criar um projeto de compilação (console) e WebhookFilter na Referência de API do CodeBuild.