Skip to main content

Effectuer des requêtes d’API authentifiées avec une application dans un workflow Actions

Vous pouvez utiliser un jeton d’accès d’installation provenant d’une App pour effectuer des requêtes d’API authentifiées dans un workflow 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 Actions

Si vous devez effectuer des requêtes d’API authentifiées dans un workflow Actions ou bien exécuter une action personnalisée nécessitant un jeton, utilisez le jeton intégré _TOKEN si possible. Toutefois, _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 App. Pour plus d’informations sur les situations où il est préférable d’utiliser une App au lieu d’un personal access token, consultez « À propos de la création d’applications  ».

Authentification avec une App

Si vous souhaitez utiliser une App pour effectuer des requêtes d’API authentifiées, vous devez inscrire une 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 Actions. Vous pouvez également passer le jeton d’accès d’installation à une action personnalisée qui nécessite un jeton.

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

  2. Stockez l’ID d'application de votre App en tant que variable de configuration 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 App, consultez « Modification d’une inscription d’application  ». 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  ». Pour plus d’informations sur le stockage de secrets, consultez « Utilisation de secrets dans Actions ».

  4. Installez l’ App sur votre compte d’utilisateur ou votre organisation et accordez-lui l’accès à tous les dépôts auxquels votre workflow doit accéder. Pour plus d’informations, consultez « Installation de votre propre application  ».

  5. Dans votre workflow 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 à , comme le montre l'exemple suivant. Si vous préférez ne pas utiliser cette action, vous pouvez dupliquer et modifier l'actions/create--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  ».

    L’exemple de workflow suivant utilise l’action actions/create--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 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_dis:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create--app-token@v1
        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