Skip to main content

Enterprise Server 3.15 está disponível no momento como versão release candidate.

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 Manifestos do GitHub App

Quando alguém registra um GitHub App em 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 GitHub App e gera o segredo do webhook do aplicativo, a chave privada (arquivo PEM), o segredo do cliente e o ID do GitHub App. A pessoa que criar o registro GitHub App no 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 GitHub App ou para ver um exemplo de implementação. Confira "Usar o Probot para implementar o fluxo do Manifesto GitHub App" para saber mais.

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

  • Ajude novos membros da equipe a familiarizar-se rapidamente quando desenvolverem GitHub Apps.
  • Permita que outras pessoas estendam um GitHub App usando as APIs GitHub sem exigir que configurem um aplicativo.
  • Crie designs de referência GitHub App para compartilhar com a comunidade GitHub.
  • Implemente GitHub Apps em ambientes de desenvolvimento e produção usando a mesma configuração.
  • Monitore as revisões com a configuração do GitHub App.

Implementar o fluxo do manifesto GitHub App

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

Note

Você precisa concluir as três etapas do fluxo do Manifesto GitHub App em uma hora.

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

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

1. Você redireciona as pessoas ao GitHub para registrar um novo GitHub App

Para redirecionar pessoas para registrar um novo GitHub App, forneça um link para que elas possam enviar uma solicitação POST ao 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 da organização na qual o aplicativo será registrado.

Inclua os parâmetros do Manifesto GitHub App 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 estiver registrando o aplicativo será redirecionada para uma página do GitHub com um campo de entrada, no qual 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 GitHub App

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 exigidas pelo GitHub App. 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. GitHub redireciona as pessoas de volta ao seu site

Quando a pessoa clica em Criar GitHub App, o GitHub redireciona de volta para o 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 GitHub App por meio de um manifesto. A resposta incluirá o id (GitHub App ID), pem (chave privada) e webhook_secret. O GitHub cria automaticamente um segredo de webhook para o aplicativo. 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.

Conclua esta etapa do fluxo do manifesto do GitHub App 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 GitHub App com base em um manifesto.

Quando a etapa final do fluxo do manifesto for concluída, a pessoa que estiver registrando o aplicativo com base no fluxo será proprietária de um GitHub App 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 do manifesto GitHub App

O Probot é uma estrutura criada com o Node.js que executa muitas das tarefas exigidas pelos GitHub Apps, como validar webhooks e realizar a autenticação. O Probot implementa o fluxo de manifesto GitHub App, facilitando a criação e o compartilhamento dos designs de referência do GitHub App com a comunidade GitHub.

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

  1. Gerar um novo GitHub App.
  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 GitHub App.
  3. Adicione o código personalizado do seu aplicativo.
  4. Execute o GitHub App localmente ou hospede-o onde desejar. Ao navegar até a URL do aplicativo hospedado, você encontrará uma página da Web com um botão Registrar o GitHub App, no qual 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.