Skip to main content

Registrar um Aplicativo GitHub a partir do manifesto

Um manifesto do GitHub App é uma maneira de compartilhar um registro de GitHub App pré-configurado com outros usuários. O fluxo de manifesto permite que alguém registre rapidamente o GitHub App.

Sobre os manifestos do aplicativo GitHub

Quando alguém registrar um aplicativo GitHub a partir de um manifesto, é necessário apenas seguir uma URL e nomear o aplicativo. O manifesto inclui as permissões, eventos e URL do webhook necessários para registrar o aplicativo automaticamente. O fluxo do manifesto cria o registro do Aplicativo GitHub e gera o segredo do webhook do aplicativo, a chave privada (arquivo PEM), o segredo do cliente e o ID do Aplicativo GitHub. A pessoa que criar o registro GitHub App a partir do manifesto será proprietária do registro GitHub App e poderá optar por editar as configurações do registro, excluí-lo ou transferi-lo para outra pessoa no GitHub.

Use o Probot para começar a usar os Manifestos de Aplicativo do GitHub ou ver um exemplo de implementação. Confira "Como usar o Probot para implementar o fluxo do Manifesto do Aplicativo do GitHub" para saber mais.

Aqui estão alguns cenários em que você pode usar Manifestos do Aplicativo GitHub para registrar aplicativos pré-configurados:

  • Ajude novos membros da equipe a familiarizar-se rapidamente ao desenvolver os aplicativos GitHub.
  • Permita que outras pessoas estendam o aplicativo GitHub usando as APIs do GitHub sem exigir que configurem um aplicativo.
  • Crie desenhos de referência do aplicativo GitHub para compartilhar com a comunidade do GitHub.
  • Certifique-se de implementar os aplicativos GitHub em ambientes de desenvolvimento e produção usando a mesma configuração.
  • Monitore as revisões de configuração do aplicativo GitHub.

Implemente o fluxo do manifesto do aplicativo GitHub

O fluxo do Manifesto do Aplicativo do GitHub usa um processo de handshake semelhante ao fluxo OAuth. O fluxo usa um manifesto para registrar um Aplicativo do GitHub e recebe um code temporário usado para recuperar a chave privada, o segredo do webhook e a ID do aplicativo.

Observação: você precisa concluir as três etapas do fluxo do Manifesto do Aplicativo do GitHub em uma hora.

Siga estas etapas para implementar o fluxo do Manifesto do aplicativo GitHub:

  1. Você redireciona as pessoas para o GitHub para registrar o Aplicativo do GitHub.
  2. O GitHub redireciona as pessoas de volta para o seu site.
  3. Você troca o código temporário para recuperar a configuração do aplicativo.

1. Você redireciona as pessoas para o GitHub para registrar o Aplicativo GitHub

Para redirecionar as pessoas para registrar o Aplicativo do GitHub, forneça um link para elas que envia uma solicitação POST em https://github.com/settings/apps/new para uma conta pessoal ou https://github.com/organizations/ORGANIZATION/settings/apps/new para uma conta de organização, substituindo ORGANIZATION pelo nome da conta de organização em que o aplicativo será registrado.

Você precisa incluir os parâmetros do Manifesto do Aplicativo do GitHub como uma cadeia de caracteres codificada em JSON em um parâmetro chamado manifest. Você também pode incluir um stateparâmetro para segurança adicional.

A pessoa que está registrando o aplicativo será redirecionada para uma página do GitHub com um campo de entrada, em que poderá editar o nome do aplicativo que você incluiu no parâmetro manifest. Se você não incluir um name no manifest, ela poderá definir o nome dela para o aplicativo nesse campo.

Parâmetros do manifesto do aplicativo GitHub

NomeTipoDescrição
namestringO nome do GitHub App.
urlstringNecessário. A home page do seu GitHub App.
hook_attributesobjectA configuração do webhook do GitHub App.
redirect_urlstringA URL completa para a qual fazer o redirecionamento após um usuário iniciar o registro do GitHub App com base em um manifesto.
callback_urlsarray of stringsUma URL completa para a qual redirecionar após alguém autorizar uma instalação. Você pode fornecer até 10 URLs de retorno de chamada.
setup_urlstringUma URL completa para redirecionar os usuários após a instalação do GitHub App, caso seja necessária uma configuração adicional.
descriptionstringUma descrição do GitHub App.
publicbooleanDefina essa opção como true quando o GitHub App estiver disponível para o público ou como false quando ele só for acessível pelo proprietário do aplicativo.
default_eventsarrayA lista de eventos que o GitHub App assina.
default_permissionsobjectO conjunto de permissões necessário para o Aplicativo do GitHub. O formato do objeto usa o nome da permissão para a chave (por exemplo, issues) e o tipo de acesso para o valor (por exemplo, write). Para obter mais informações, confira "Escolhendo permissões para um Aplicativo GitHub".
request_oauth_on_installbooleanDefina como true para solicitar que o usuário autorize o GitHub App, depois que o GitHub App for instalado.
setup_on_updatebooleanDefina como true para redirecionar os usuários para o setup_url depois que eles atualizarem a instalação do GitHub App.

O objeto hook_attributes tem as chaves a seguir.

NomeTipoDescrição
urlstringNecessário. A URL do servidor que receberá as solicitações POST de webhook.
activebooleanImplementar detalhes do evento quando esse hook é acionado. O padrão é verdadeiro.

Parâmetros

NomeTipoDescrição
statestringUma string aleatória indescritível. É usado para proteger contra ataques de falsificação de pedidos entre sites.

Exemplos

Este exemplo usa um formulário em uma página da Web com um botão que dispara a solicitação POST para uma conta pessoal:

<form action="https://github.com/settings/apps/new?state=abc123" method="post">
 Register a GitHub App Manifest: <input type="text" name="manifest" id="manifest"><br>
 <input type="submit" value="Submit">
</form>

<script>
 input = document.getElementById("manifest")
 input.value = JSON.stringify({
   "name": "Octoapp",
   "url": "https://www.example.com",
   "hook_attributes": {
     "url": "https://example.com/github/events",
   },
   "redirect_url": "https://example.com/redirect",
   "callback_urls": [
     "https://example.com/callback"
   ],
   "public": true,
   "default_permissions": {
     "issues": "write",
     "checks": "write"
   },
   "default_events": [
     "issues",
     "issue_comment",
     "check_suite",
     "check_run"
   ]
 })
</script>

Este exemplo usa um formulário em uma página da Web com um botão que dispara a solicitação POST para uma conta de organização. Substitua ORGANIZATION pelo nome da conta de organização em que deseja registrar o aplicativo.

<form action="https://github.com/organizations/ORGANIZATION/settings/apps/new?state=abc123" method="post">
 register a GitHub App Manifest: <input type="text" name="manifest" id="manifest"><br>
 <input type="submit" value="Submit">
</form>

<script>
 input = document.getElementById("manifest")
 input.value = JSON.stringify({
   "name": "Octoapp",
   "url": "https://www.example.com",
   "hook_attributes": {
     "url": "https://example.com/github/events",
   },
   "redirect_url": "https://example.com/redirect",
   "callback_urls": [
     "https://example.com/callback"
   ],
   "public": true,
   "default_permissions": {
     "issues": "write",
     "checks": "write"
   },
   "default_events": [
     "issues",
     "issue_comment",
     "check_suite",
     "check_run"
   ]
 })
</script>

2. O GitHub redireciona as pessoas novamente para o seu site

Quando a pessoa clica em Criar Aplicativo do GitHub, o GitHub redireciona-a novamente para a redirect_url com um code temporário em um parâmetro de código. Por exemplo:

https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679

Se você fornecer um parâmetro state, também verá esse parâmetro na redirect_url. Por exemplo:

https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679&state=abc123

3. Você troca o código temporário para recuperar a configuração do aplicativo

Para concluir o handshake, envie o code temporário em uma solicitação POST ao ponto de extremidade Criar um Aplicativo do GitHub por meio de um manifesto. A resposta incluirá a id (ID do Aplicativo do GitHub), a pem (a chave privada) e o webhook_secret. O GitHub cria um segredo webhook para o aplicativo automaticamente. Você pode armazenar esses valores em variáveis de ambiente no servidor do aplicativo. Por exemplo, se o seu aplicativo usar o dotenv para armazenar variáveis de ambiente, você armazenará as variáveis no arquivo .env do aplicativo.

Você deve concluir esta etapa do fluxo do manifesto do aplicativo GitHub em uma hora.

Observação: esse ponto de extremidade tem limite de taxa. Confira Limites de taxa para saber como obter o status do limite de taxa atual.

POST /app-manifests/{code}/conversions

Para obter mais informações sobre a resposta do ponto de extremidade, confira Criar um Aplicativo do GitHub com base em um manifesto.

Quando a etapa final do fluxo de manifesto for concluída, a pessoa que estiver registrando o aplicativo a partir do fluxo será proprietária de um Aplicativo GitHub registrado e poderá instalar em qualquer um dos seus repositórios pessoais. A pessoa pode optar por estender o aplicativo usando as APIs do GitHub, transferir a propriedade para outra pessoa ou excluí-lo a qualquer momento.

Usar o Probot para implementar o fluxo de manifesto do aplicativo GitHub

O Probot é uma estrutura criada com o Node.js que executa muitas das tarefas necessárias para todos os Aplicativos do GitHub, como validar webhooks e realizar a autenticação. Ele implementa o fluxo de manifesto do Aplicativo do GitHub, facilitando a criação e o compartilhamento de designs de referência do Aplicativo do GitHub com a comunidade do GitHub.

Para criar um aplicativo Probot que você pode compartilhar, siga estas etapas:

  1. Gerar um novo Aplicativo do GitHub.
  2. Abra o projeto que você criou e personalize as configurações no arquivo app.yml. O Probot usa as configurações em app.yml como os parâmetros do Manifesto do Aplicativo do GitHub.
  3. Adicione o código personalizado do seu aplicativo.
  4. Executar o Aplicativo do GitHub localmente ou hospedá-lo em qualquer lugar desejado. Ao navegar até a URL do aplicativo hospedado, você encontrará uma página da Web com um botão Registrar o Aplicativo GitHub, em que as pessoas podem clicar para registrar o aplicativo pré-configurado.

Usando o dotenv, o Probot cria um arquivo .env e define as variáveis de ambiente APP_ID, PRIVATE_KEY e WEBHOOK_SECRET com os valores recuperados da configuração do aplicativo.

Hospedar seu aplicativo com Glitch

Veja um exemplo de aplicativo do Probot que usa o Glitch para hospedar e compartilhar o aplicativo. O exemplo usa a API de Verificações e seleciona as permissões e os eventos da API de Verificações necessários no arquivo app.yml. Glitch é uma ferramenta que permite que você "mescle seus próprios aplicativos". Mesclar um aplicativo cria uma cópia do aplicativo que a Glitch hospeda e implementa. Confira "Sobre o Glitch" para saber mais sobre como remixar aplicativos do Glitch.