Criar um modelo de regra de aprovação - AWS CodeCommit

AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um modelo de regra de aprovação

É possível criar um ou mais modelos de regras de aprovação para ajudá-lo a personalizar seus fluxos de trabalho de desenvolvimento em vários repositórios. Ao criar vários modelos, é possível configurar a criação automática de regras de aprovação para que diferentes ramificações tenham níveis apropriados de aprovações e controle. Por exemplo, é possível criar modelos diferentes para ramificações de produção e desenvolvimento e aplicar esses modelos a um ou mais repositórios. Quando os usuários criam solicitações pull nesses repositórios, a solicitação é avaliada em relação a esses modelos. Se a solicitação corresponder às condições nos modelos aplicados, serão criadas regras de aprovação da solicitação pull.

É possível usar o console ou a AWS CLI para criar modelos de regras de aprovação. Para obter mais informações sobre políticas e permissões gerenciadas para modelos de regras de aprovação, consulte Permissões para ações em modelos de regras de aprovação e AWS políticas gerenciadas para CodeCommit.

Criar um modelo de regra de aprovação (console)

Os modelos de regras de aprovação não são associados a nenhum repositório por padrão. É possível fazer uma associação entre um modelo e um ou mais repositórios ao criar o modelo ou adicionar as associações mais tarde.

Como criar um modelo de regra de aprovação (console)

  1. Abra o console do CodeCommit em https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Escolha Approval rule templates (Modelos de regras de aprovação) e escolha Create template (Criar modelo).

  3. Em Approval rule template name (Nome do modelo de regra de aprovação), dê ao modelo um nome descritivo para que você saiba para que serve. Por exemplo, se você deseja exigir que uma pessoa de um conjunto de desenvolvedores seniores aprove uma solicitação pull para que possa ser mesclada, é possível nomear a regra Require 1 approver from a senior developer.

  4. (Opcional) Em Description (Descrição), forneça uma descrição da finalidade deste modelo. Isso pode ajudar outras pessoas a decidir se esse modelo é apropriado para os repositórios.

  5. Em Number of approvals needed (Número de aprovações necessárias), insira o número desejado. O padrão é 1.

  6. (Opcional) Se deseja exigir que as aprovações de uma solicitação pull sejam provenientes de um grupo específico de usuários, em Approval rule members (Membros da regra de aprovação), escolha Add (Adicionar). Em Approver type (Tipo de aprovador), escolha uma das seguintes opções:

    • Nome de usuário do IAM ou perfil assumido: essa opção preenche previamente o ID da conta da Amazon Web Services para a conta que você usou para fazer login e requer apenas um nome. Ela pode ser usada para usuários de acesso federados e usuários do IAM cujos nomes correspondam ao nome fornecido. Essa é uma opção muito eficiente que oferece uma grande flexibilidade. Por exemplo, se você escolher essa opção, estiver conectado com a conta 123456789012 da Amazon Web Services e especificar Mary_Major, todos as opções a seguir contarão como aprovações provenientes desse usuário:

      • Um usuário do IAM na conta (arn:aws:iam::123456789012:user/Mary_Major)

      • Um usuário federado identificado no IAM como Mary_Major (arn:aws:sts::123456789012:federated-user/Mary_Major)

      Essa opção não reconhece uma sessão ativa de alguém que assume a função de CodeCommitReview com um nome de sessão de função de Mary_Major (arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major), a menos que você inclua um curinga (*Mary_Major). Você também pode especificar o nome da função explicitamente (CodeCommitReview/Mary_Major).

    • ARN totalmente qualificado: essa opção permite especificar o nome do recurso da Amazon (ARN) totalmente qualificado do perfil ou usuário do IAM. Essa opção também oferece suporte a funções assumidas usadas por outros serviços da AWS, como o AWS Lambda e o AWS CodeBuild. Para funções assumidas, o formato do ARN deve ser arn:aws:sts::AccountID:assumed-role/RoleName para funções (roles) e arn:aws:sts::AccountID:assumed-role/FunctionName funções (functions).

    Se você escolheu o nome de usuário do IAM ou perfil assumido como o tipo de aprovador, em Valor, insira o nome do usuário ou perfil do IAM ou o ARN totalmente qualificado do usuário ou perfil. Escolha Add (Adicionar) novamente para adicionar mais usuários ou funções, até que você tenha adicionado todos os usuários ou funções cujas aprovações contam para o número de aprovações necessárias.

    Ambos os tipos de aprovadores permitem usar curingas (*) em seus valores. Por exemplo, se você escolher a opção nome de usuário do IAM ou perfil assumido e especificar CodeCommitReview/*, todos os usuários que assumirem o perfil de CodeCommitReview serão contados no grupo de aprovação. Os nomes de sessão de função individual são contabilizados no número necessário de aprovadores. Dessa forma, tanto Mary_Major quanto Li_Juan contam como aprovações quando conectados e assumindo a função de CodeCommitReview. Para obter mais informações sobre ARNs do IAM, curingas e formatos, consulte Identificadores do IAM.

    nota

    As regras de aprovação não oferecem suporte a aprovações entre contas.

  7. (Opcional) Em Branch filters (Filtros de ramificação), insira nomes de ramificação de destino a serem usados para filtrar a criação de regras de aprovação. Por exemplo, se você especificar master, uma regra de aprovação será criada para solicitações pull em repositórios associados somente se a ramificação de destino para a solicitação pull for uma ramificação chamada master. É possível usar curingas (*) em nomes de ramificação para aplicar regras de aprovação a todos os nomes de ramificação que correspondam aos caracteres curinga. No entanto, não é possível usar um curinga no início de um nome de ramificação. É possível especificar até 100 nomes de ramificação. Se você não especificar nenhum filtro, o modelo se aplicará a todas as ramificações em um repositório associado.

  8. (Opcional) Em Repositórios associados, na lista Repositórios, escolha os repositórios nessa Região da AWS que deseja associar a essa regra de aprovação.

    nota

    É possível optar por associar repositórios após a criação do modelo. Para obter mais informações, consulte Associar um modelo de regra de aprovação a um repositório.

  9. Escolha Create (Criar).

Um modelo de regra de aprovação que exige 1 aprovador em uma regra de aprovação definida se uma solicitação pull for criada na ramificação master, associada a dois repositórios

Criar um modelo de regra de aprovação (AWS CLI)

É possível usar a AWS CLI para criar modelos de regras de aprovação. Ao usar a AWS CLI, é possível especificar referências de destino para o modelo, para que ele se seja aplicável somente a solicitações pull cujas ramificações de destino correspondam às do modelo.

Como criar um modelo de regra de aprovação (AWS CLI)

  1. Em um terminal ou uma linha de comando, execute o comando create-approval-rule-template, especificando:

    • O nome do modelo de regra de aprovação. Considere usar um nome que descreva sua finalidade.

    • Uma descrição do modelo de regra de aprovação. Assim como acontece com o nome, considere fornecer uma descrição detalhada.

    • A estrutura JSON do modelo de regra de aprovação. Essa estrutura pode incluir requisitos para referências de destino, que são ramificações de destino para solicitações pull às quais a regra de aprovação é aplicada e membros do grupo de aprovações, que são usuários cujas aprovações contam para o número de aprovações necessárias.

    Ao criar o conteúdo da regra de aprovação, é possível especificar aprovadores em um grupo de aprovações de duas maneiras:

    • CodeCommitApprovers: essa opção exige apenas um recurso e uma conta da Amazon Web Services. Ela pode ser usada para usuários de acesso federados e usuários do IAM cujo nome corresponde ao nome do recurso fornecido. Essa é uma opção muito eficiente que oferece uma grande flexibilidade. Por exemplo, se você especificar a conta 123456789012 da AWS e Mary_Major, todos as opções a seguir contam como aprovações provenientes desse usuário:

      • Um usuário do IAM na conta (arn:aws:iam::123456789012:user/Mary_Major)

      • Um usuário federado identificado no IAM como Mary_Major (arn:aws:sts::123456789012:federated-user/Mary_Major)

      Essa opção não reconhece uma sessão ativa de alguém que assume a função de SeniorDevelopers com um nome de sessão de função Mary_Major (arn:aws:sts::123456789012:assumed-role/SeniorDevelopers/Mary_Major), a menos que você inclua um curinga (*Mary_Major).

    • ARN totalmente qualificado: essa opção permite especificar o nome do recurso da Amazon (ARN) totalmente qualificado do perfil ou usuário do IAM.

    Para obter mais informações sobre ARNs do IAM, curingas e formatos, consulte Identificadores do IAM.

    O exemplo a seguir cria um modelo de regra de aprovação chamado 2-approver-rule-for-main e uma descrição Requires two developers from the team to approve the pull request if the destination branch is main. O modelo exige que dois usuários que assumem a função de CodeCommitReview aprovem qualquer solicitação pull para que ela possa ser mesclada à ramificação main:

    aws codecommit create-approval-rule-template --approval-rule-template-name 2-approver-rule-for-main --approval-rule-template-description "Requires two developers from the team to approve the pull request if the destination branch is main" --approval-rule-template-content "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}"
  2. Se houver êxito, o comando gerará uma saída semelhante à seguinte:

    { "approvalRuleTemplate": { "approvalRuleTemplateName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "approvalRuleTemplateDescription": "Requires two developers from the team to approve the pull request if the destination branch is main", "lastModifiedDate": 1571356106.936, "ruleContentSha256": "4711b576EXAMPLE" } }