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
-
Crie um GitHub App. Para saber mais, confira Registrar um Aplicativo GitHub. Configure o GitHub App da seguinte maneira.
- 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.
- Em "Permissões", selecione Permissões de repositório.
- À direita de "Ações", clique no menu suspenso e selecione Acesso: somente leitura.
- À direita de "Implantações", clique no menu suspenso e selecione Acesso: Leitura e gravação.
- Em "Assinar eventos", selecione Regra de proteção de implantação.
-
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.
-
Valide a solicitação de
POST
recebida. Para saber mais, confira Validação de entregas de webhooks. -
Use um Token Web JSON para autenticar como um GitHub App Para saber mais, confira Efetuar autenticação como um aplicativo GitHub.
-
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" \ } \ }'
-
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 ostate
. 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. -
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 propriedadestate
comoapproved
ourejected
. Para saber mais, confira Pontos de extremidade da API REST para execuções de fluxo de trabalho. -
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. -
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.