Skip to main content

Effectuer des requĂȘtes d’API authentifiĂ©es avec une application GitHub dans un workflow GitHub Actions

Vous pouvez utiliser un jeton d’accĂšs d’installation provenant d’une GitHub App pour effectuer des requĂȘtes d’API authentifiĂ©es dans un workflow GitHub Actions. Vous pouvez Ă©galement passer le jeton Ă  une action personnalisĂ©e pour permettre Ă  celle-ci d’effectuer des requĂȘtes d’API authentifiĂ©es.

À propos de l’authentification GitHub Actions

Si vous devez effectuer des requĂȘtes d’API authentifiĂ©es dans un workflow GitHub Actions ou bien exĂ©cuter une action personnalisĂ©e nĂ©cessitant un jeton, utilisez le jeton intĂ©grĂ© GITHUB_TOKEN si possible. Toutefois, GITHUB_TOKEN peut accĂ©der uniquement aux ressources qui se trouvent dans le dĂ©pĂŽt du workflow. Si vous devez accĂ©der Ă  des ressources supplĂ©mentaires, telles que des ressources dans une organisation ou dans un autre dĂ©pĂŽt, vous pouvez utiliser une GitHub App. Pour plus d’informations sur les situations oĂč il est prĂ©fĂ©rable d’utiliser une GitHub App au lieu d’un personal access token, consultez « Ă€ propos de la crĂ©ation d’applications GitHub Â».

Authentification avec une GitHub App

Si vous souhaitez utiliser une GitHub App pour effectuer des requĂȘtes d’API authentifiĂ©es, vous devez inscrire une GitHub App, stocker les informations d’identification de l’application et installer l’application. AprĂšs cela, vous pouvez utiliser l’application pour crĂ©er un jeton d’accĂšs d’installation avec lequel vous effectuerez les requĂȘtes d’API authentifiĂ©es dans un workflow GitHub Actions. Vous pouvez Ă©galement passer le jeton d’accĂšs d’installation Ă  une action personnalisĂ©e qui nĂ©cessite un jeton.

  1. Inscrire une GitHub App. Accordez Ă  l’inscription d’GitHub App les autorisations requises pour accĂ©der aux ressources souhaitĂ©es. Pour plus d’informations, consultez « Inscription d’une application GitHub Â» et « Choix des autorisations pour une application GitHub Â».

  2. Stockez l’ID d'application de votre GitHub App en tant que variable de configuration GitHub Actions. Vous trouverez l’ID de l’application dans la page de paramĂštres de votre application. L’ID de l’application n’est pas l’ID client. Pour plus d’informations sur la navigation vers la page des paramĂštres pour votre GitHub App, consultez « Modification d’une inscription d’application GitHub Â». Pour plus d’informations concernant le stockage des variables de configuration, consultez « Stocker des informations dans des variables Â».

  3. GĂ©nĂ©rez une clĂ© privĂ©e pour votre application. Stockez le contenu du fichier obtenu dans un secret. (Stocker l'ensemble du contenu du fichier, y compris -----BEGIN RSA PRIVATE KEY----- et -----END RSA PRIVATE KEY-----.) Pour plus d’informations, consultez « Gestion des clĂ©s privĂ©es pour les applications GitHub Â». Pour plus d’informations sur le stockage de secrets, consultez « Utilisation de secrets dans GitHub Actions Â».

  4. Installez l’GitHub App sur le bon compte et accordez-lui les autorisations et l'accĂšs Ă  tous les dĂ©pĂŽts auxquels votre workflow doit accĂ©der. Pour plus d’informations, consultez « Installation de votre propre application GitHub Â».

  5. Dans votre workflow GitHub Actions, crĂ©ez un jeton d’accĂšs d’installation avec lequel vous pourrez effectuer les requĂȘtes d’API.

    Pour ce faire, vous pouvez utiliser une action appartenant Ă  GitHub, comme le montre l'exemple suivant. Si vous prĂ©fĂ©rez ne pas utiliser cette action, vous pouvez dupliquer et modifier l'actions/create-github-app-tokenaction, ou vous pouvez Ă©crire un script pour que votre flux de travail crĂ©e manuellement un jeton d'installation. Pour plus d’informations, consultez « Installation de l’authentification en tant qu’application GitHub Â».

    L’exemple de workflow suivant utilise l’action actions/create-github-app-token pour gĂ©nĂ©rer un jeton d’accĂšs d’installation. Ensuite, le workflow utilise le jeton pour effectuer une requĂȘte d’API via GitHub CLI.

    Dans le workflow suivant, remplacez APP_ID par le nom de la variable de configuration dans laquelle vous avez stockĂ© votre ID d'application. Remplacez APP_PRIVATE_KEY par le nom du secret oĂč vous avez stockĂ© la clĂ© privĂ©e de votre application.

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