Skip to main content

Criar regras de proteção de implantação personalizadas

Use o GitHub Apps para automatizar a proteção de implantações com sistemas de terceiros.

Quem pode usar esse recurso?

As regras de proteção de implantação personalizadas estão disponíveis em repositórios públicos para todos os planos. Para acessar as regras de proteção de implantação personalizadas em repositórios privados ou internos, você deve usar GitHub Enterprise. Para saber mais, confira Planos do GitHub.

Pré-requisitos

Observação

Regras de proteção de implementação personalizada estão em versão prévia pública e estão sujeitas a alterações.

Para obter informações gerais sobre as regras de proteção à implantação, confira Implantando com GitHub Actions.

Criar uma regra de proteção de implantação personalizada com o GitHub Apps

  1. Crie um GitHub App. Para saber mais, confira Registrar um Aplicativo GitHub. Configure o GitHub App da seguinte maneira.

    1. Opcionalmente, no campo de texto URL de Retorno de Chamada em "Identificar e autorizar usuários", insira a URL de retorno de chamada. Para saber mais, confira Sobre a URL de retorno de chamada de autorização do usuário.
    2. Em "Permissões", selecione Permissões de repositório.
    3. À direita de "Ações", clique no menu suspenso e selecione Acesso: somente leitura.
      Captura de tela da seção "Repository permissions" de um novo Aplicativo GitHub. A permissão Actions mostra "Read-only" e está contornada em laranja.
    4. À direita de "Implantações", clique no menu suspenso e selecione Acesso: Leitura e gravação.
      Captura de tela da seção "Repository permissions" de um novo Aplicativo GitHub. A permissão Deployments mostra "Read and write" e está contornada em laranja.
    5. Em "Assinar eventos", selecione Regra de proteção de implantação.
      Captura de tela da seção "Subscribe to events" de um novo Aplicativo GitHub. A caixa de seleção da regra de proteção de implantação está contornada em laranja.
  2. Instale a regra de proteção de implantação personalizada em seus repositórios e habilite-a para uso. Para saber mais, confira Configurar regras de proteção de implantação personalizadas.

Aprovar ou rejeitar implantações

Depois que um fluxo de trabalho atinge um trabalho que faz referência a um ambiente com a regra de proteção de implantação personalizada habilitada, GitHub envia uma solicitação POST para um URL que você configura contendo a payload deployment_protection_rule. Você pode escrever sua regra de proteção de implantação para enviar automaticamente solicitações de API REST que aprovem ou rejeitem a implantação com base na carga deployment_protection_rule. Configure suas solicitações de API REST da seguinte maneira.

  1. Valide a solicitação de POST recebida. Para saber mais, confira Validação de entregas de webhooks.

  2. Use um Token Web JSON para autenticar como um GitHub App Para saber mais, confira Efetuar autenticação como um aplicativo GitHub.

  3. Usando o ID de instalação da carga útil do payload do webhook deployment_protection_rule, gere um token de instalação. Para saber mais, confira Sobre a autenticação com um GitHub App.

    curl --request POST \
    --url "https://api.github.com/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer {jwt}" \
    --header "Content-Type: application/json" \
    --data \
    '{ \
       "repository_ids": [321], \
       "permissions": { \
          "deployments": "write" \
       } \
    }'
    
  4. Opcionalmente, para adicionar um relatório de status sem executar nenhuma outra ação para o GitHub, envie uma solicitação POST para /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. No corpo da solicitação, omita o state. Para saber mais, confira Pontos de extremidade da API REST para execuções de fluxo de trabalho. Você pode postar um relatório status na mesma implantação até 10 vezes. Os relatórios de status dão suporte à formatação Markdown e podem ter até 1.024 caracteres.

  5. Para aprovar ou rejeitar uma solicitação, envie uma solicitação POST para /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. No corpo da solicitação, defina a propriedade state como approved ou rejected. Para saber mais, confira Pontos de extremidade da API REST para execuções de fluxo de trabalho.

  6. Opcionalmente, solicite o status de uma aprovação para um fluxo de trabalho executado enviando uma solicitação GET para /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals. Para saber mais, confira Pontos de extremidade da API REST para execuções de fluxo de trabalho.

  7. Opcionalmente, revise a implantação no GitHub. Para saber mais, confira Revisar implantações.

Publicar regras de proteção de implantação personalizada no GitHub Marketplace

Você pode publicar o GitHub App no GitHub Marketplace para permitir que os desenvolvedores descubram regras de proteção adequadas e instalem-no em seus repositórios GitHub. Ou você pode navegar pelas regras de proteção de implantação personalizadas existentes para atender às suas necessidades. Para saber mais, confira Sobre o GitHub Marketplace para aplicativos e Listar um aplicativo no GitHub Marketplace.