Skip to main content

Esta versão do GitHub Enterprise Server será descontinuada em 2026-03-17. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Fazer solicitações de API autenticadas com um aplicativo GitHub em um fluxo de trabalho GitHub Actions

É possível usar um token de acesso de instalação de um GitHub App para realizar solicitações autenticadas de API em um fluxo de trabalho do GitHub Actions. Também é possível transmitir o token a uma ação personalizada para permitir que ela faça solicitações de API autenticadas.

Sobre a autenticação do GitHub Actions

Para fazer solicitações de API autenticadas em um fluxo de trabalho do GitHub Actions ou executar uma ação personalizada que exige um token, use o recurso interno disponível, se possível. No entanto, só pode acessar recursos dentro do repositório associado ao fluxo de trabalho. Para acessar recursos adicionais, como recursos em uma organização ou em outro repositório, use um GitHub App. Para saber por que usar um GitHub App em vez de um personal access token, confira AUTOTITLE.

Autenticando com um GitHub App

Para usar um GitHub App a fim de fazer solicitações de API autenticadas, é necessário registrar o GitHub App, armazenar as credenciais do aplicativo e instalá-lo. Feito isso, é possível usar o aplicativo a fim de criar um token de acesso de instalação que é usado para fazer solicitações de API autenticadas em um fluxo de trabalho do GitHub Actions. Também é possível transmitir o token de acesso de instalação para uma ação personalizada que requer um token.

  1. Registrar o GitHub App. Dê ao registro do GitHub App as permissões necessárias para acessar os recursos desejados. Para saber mais, confira AUTOTITLE e AUTOTITLE.

  2. Armazene a ID do aplicativo do GitHub App como uma variável de configuração do GitHub Actions. Para encontrar a ID do aplicativo, acesse a página de configurações dele. A ID do aplicativo é diferente da ID do cliente. Para saber como acessar a página de configurações do GitHub App, confira AUTOTITLE. Para obter mais informações sobre como armazenar variáveis de configuração, confira AUTOTITLE.

  3. Gerar uma chave privada para o seu aplicativo. Armazene o conteúdo do arquivo resultante como um segredo. (Armazene todo o conteúdo do arquivo, incluindo e .) Para saber mais, confira AUTOTITLE. Para saber mais sobre como armazenar segredos, confira AUTOTITLE.

  4. Instale o GitHub App na conta certa e conceda permissões e acesso a todos os repositórios que você deseja que seu fluxo de trabalho acesse. Para saber mais, confira AUTOTITLE.

  5. No fluxo de trabalho do GitHub Actions, crie um token de acesso de instalação, que será usado para fazer solicitações de API.

    Para fazer isso, você pode usar uma ação de propriedade de GitHub, conforme demonstrado no exemplo a seguir. Se preferir não usar essa ação, você poderá fazer um fork e modificar a ação, ou escrever um script para que seu fluxo de trabalho crie manualmente um token de instalação. Para saber mais, confira AUTOTITLE.

    O fluxo de trabalho de exemplo a seguir usa a ação para gerar um token de acesso de instalação. Em seguida, o fluxo de trabalho usa o token para fazer uma solicitação de API por meio da GitHub CLI.

    No fluxo de trabalho a seguir, substitua pelo nome da variável de configuração em que você armazenou a ID do aplicativo. Substitua pelo nome do segredo em que você armazenou a chave privada do aplicativo.

YAML
on:
  workflow_dispatch:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Use the token
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
        run: |
          gh api octocat