Skip to main content

Decidir quando criar um aplicativo GitHub

Ao criar uma integração, você deve considerar o uso de um GitHub App nos cenários a seguir, em vez de um OAuth app, personal access tokenou GitHub Actions.

Usando um GitHub App em vez de um OAuth app

Em geral, GitHub Apps são preferenciais em vez de OAuth apps.

Tanto OAuth apps quanto GitHub Apps usam OAuth 2.0.

OAuth apps só pode agir em nome de um usuário enquanto GitHub Apps pode agir em nome de um usuário ou independentemente de um usuário.

Para saber mais, confira Diferenças entre aplicativos GitHub e aplicativos OAuth.

Para obter informações sobre como migrar um existente OAuth app para um GitHub App, consulte Migrando aplicativos OAuth para aplicativos GitHub.

GitHub Apps oferecer segurança aprimorada

GitHub Apps forneça mais controle sobre o que o aplicativo pode fazer. Em vez dos escopos amplos que OAuth apps usam, GitHub Apps use permissões refinadas. Por exemplo, se seu aplicativo precisar ler o conteúdo de um repositório, um OAuth app exigiria o escopo repo, que também permitiria ao aplicativo editar o conteúdo e as configurações do repositório. Um GitHub App pode solicitar acesso somente para leitura ao conteúdo do repositório, o que não permitirá que o aplicativo execute ações com mais privilégios, como editar o conteúdo do repositório ou suas configurações.

GitHub Apps também oferecem mais controle sobre o acesso ao repositório. Com um GitHub App, o proprietário da conta de usuário ou da organização que instalou o aplicativo pode decidir quais repositórios o aplicativo pode acessar. Por outro lado, um OAuth app pode acessar todos os repositórios que o usuário que autorizou o aplicativo pode acessar.

GitHub Apps use tokens de curta duração. Se o token for vazado, ele será válido por um período menor, o que reduz os danos que podem ser causados. Em contrapartida, OAuth app tokens não expiram até que a pessoa que autorizou o token OAuth app revogue o token.

Esses recursos de segurança ajudam a reforçar a segurança do seu GitHub App ao limitar os danos que poderiam ser causados se as credenciais do seu app vazassem. Além disso, isso permite que as organizações com políticas de segurança mais rigorosas usem seu aplicativo.

GitHub Apps pode agir independentemente de ou em nome de um usuário

GitHub Apps pode agir independentemente de um usuário. Isso é útil para automações que não exigem a entrada de usuário.

Semelhante a OAuth apps, GitHub Apps ainda pode executar ações em nome de um usuário. Ao contrário OAuth apps, que não indica que a ação foi executada pelo aplicativo, GitHub Apps indique que a ação foi executada pelo aplicativo em nome do usuário.

GitHub Appsnão estão vinculados a uma conta de usuário e não consomem um licença. GitHub Apps permanecem instalados mesmo quando a pessoa que inicialmente instalou o aplicativo deixa a organização. Isso permite que suas integrações continuem funcionando mesmo que as pessoas saiam da sua equipe.

GitHub Apps têm limites de taxa escalonáveis

O limite de taxa para GitHub Apps usar um token de acesso de instalação é dimensionado com o número de repositórios e o número de usuários da organização. Por outro lado, OAuth apps têm limites de taxa de solicitação mais baixos e não escalam. Para saber mais, confira Limites de taxa para aplicativos GitHub.

GitHub Apps ter webhooks integrados

GitHub Apps têm webhooks internos e centralizados. GitHub Apps pode receber eventos de webhook para todos os repositórios e organizações que o aplicativo pode acessar. Por outro lado, OAuth apps deve configurar webhooks individualmente para cada repositório e organização.

O acesso à API é um pouco diferente

Em geral, GitHub Apps e OAuth apps pode fazer as mesmas solicitações de API. No entanto, há algumas diferenças:

  • A API REST para gerenciar execuções de verificação e conjuntos de verificações está disponível apenas para GitHub Apps.
  • Recursos de nível empresarial, como o próprio objeto da empresa, não estão disponíveis para GitHub Apps. Isso significa que GitHub Apps não pode chamar endpoints como GET /enterprise/settings/license. No entanto, os recursos da organização e do repositório de propriedade da empresa estão disponíveis.
  • Algumas solicitações podem retornar dados incompletos dependendo das permissões e do acesso ao repositório que foi concedido a um GitHub App. Por exemplo, se o aplicativo fizer uma solicitação para obter todos os repositórios aos quais um usuário pode acessar, a resposta incluirá apenas os repositórios aos quais o aplicativo também recebeu acesso.

Para obter mais informações sobre os endpoints da API REST disponíveis para GitHub Apps, consulte Pontos de extremidade disponíveis para tokens de acesso de instalação do aplicativo GitHub.

Escolhendo entre um GitHub App ou um personal access token

Se você quiser acessar os recursos de GitHub em nome de um usuário ou de uma organização, ou se prevê uma integração de longa duração, recomendamos desenvolver uma GitHub App.

Você pode usar personal access tokens para testes de API ou scripts de curta duração. Como um personal access token está associado a um usuário, sua automação poderá ser interrompida se o usuário não tiver mais acesso aos recursos necessários. GitHub App instalado em uma organização não depende de um usuário. Além disso, ao contrário de um usuário, um GitHub App não consome um GitHub de licença.

GitHub dá suporte a dois tipos de personal access tokens, mas recomenda que você use fine-grained personal access tokens em vez de personal access tokens (classic) sempre que possível. Para obter mais informações sobre personal access tokens, confira Gerenciar seus tokens de acesso pessoal.

Escolhendo entre um GitHub App ou GitHub Actions

GitHub Apps e GitHub Actions ambos fornecem maneiras de criar ferramentas de automação e fluxo de trabalho.

_ GitHub Actions _ fornecer automação que pode executar trabalhos como integração contínua, tarefas de implantação e gerenciamento de projetos em um repositório. Eles são executados diretamente em GitHubcomputadores executores hospedados ou executores auto-hospedados que o administrador configura. GitHub Actions não são executados persistentemente. GitHub Actions os fluxos de trabalho são executados em resposta a eventos que ocorrem em seu repositório e só têm acesso aos recursos do repositório para os quais estão configurados. No entanto, as ações personalizadas podem ser compartilhadas entre repositórios e organizações, permitindo que os desenvolvedores reutilizem e modifiquem as ações existentes de acordo com as necessidades. GitHub Actions também contam com gerenciamento integrado de segredos, que você pode usar para interagir de forma segura com serviços de terceiros e gerenciar chaves de implantação com segurança.

_ GitHub Apps _ ser executados continuamente em um servidor ou infraestrutura computacional que você fornece, ou no dispositivo de um usuário. Eles podem reagir a eventos de webhook GitHub, bem como a eventos externos ao ecossistema GitHub. Elas são uma boa opção para operações que abrangem vários repositórios ou organizações ou para fornecer serviços hospedados a outras organizações e empresas. A GitHub App é a melhor opção ao criar uma ferramenta com funções que ocorrem principalmente fora de GitHub ou que exigem mais tempo de execução ou permissões do que as atribuídas a um fluxo de trabalho GitHub Actions.

Para obter mais informações sobre a comparação de GitHub Actions com GitHub Apps, consulte GitHub Actions vs GitHub Apps.

Você pode usar um GitHub App para autenticar em um GitHub Actions o fluxo de trabalho se o GITHUB_TOKEN integrado não tiver permissões suficientes. Para saber mais, confira Fazer solicitações de API autenticadas com um aplicativo GitHub em um fluxo de trabalho GitHub Actions.