À propos de l’authentification GitHub Actions
Si vous devez effectuer des demandes d’API authentifiées dans un GitHub Actions flux de travail ou exécuter une action personnalisée nécessitant un jeton, vous devez utiliser le composant GITHUB_TOKEN intégré si possible. Toutefois, GITHUB_TOKEN peut accéder uniquement aux ressources qui se trouvent dans le dépôt du workflow. Si vous avez besoin d’accéder à des ressources supplémentaires, telles que des ressources d’une organisation ou dans un autre référentiel, vous pouvez utiliser un GitHub App. Pour plus d’informations sur la raison pour laquelle vous pouvez utiliser un GitHub App sur un personal access token, consultez À propos de la création d’applications GitHub.
Authentification avec un GitHub App
Pour utiliser GitHub App afin d’effectuer des requêtes d’API authentifiées, vous devez enregistrer GitHub App, stocker les identifiants de votre application et installer votre application. Une fois cette opération effectuée, vous pouvez utiliser votre application pour créer un jeton d’accès d’installation, qui peut être utilisé pour effectuer des demandes d’API authentifiées dans un GitHub Actions flux de travail. Vous pouvez également passer le jeton d’accès d’installation à une action personnalisée qui nécessite un jeton.
-
Enregistrer un GitHub App. Accordez à votre GitHub App inscription les autorisations nécessaires 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 ».
-
Stockez l’ID client de votre GitHub App en tant que GitHub Actions variable de configuration. Vous pouvez trouver votre ID client dans la page Paramètres de votre application. ID client est différent de l’ID de l’application. Pour plus d'informations sur la façon d'accéder à la page des paramètres de 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 ».
-
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 ». -
Installez le GitHub App sur le bon compte et accordez-lui les autorisations nécessaires ainsi que l’accès à tous les référentiels auxquels vous souhaitez que votre workflow accède. Pour plus d’informations, consultez « Installation de votre propre application GitHub ».
-
Dans votre GitHub Actions flux de travail, créez un jeton d’accès d’installation, que vous pouvez utiliser pour effectuer des demandes d’API.
Pour ce faire, vous pouvez utiliser une GitHubaction appartenant à un propriétaire, comme illustré dans 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 « Authentification en tant qu’installation d’application GitHub ».L’exemple de workflow suivant utilise l’action
actions/create-github-app-tokenpour générer un jeton d’accès d’installation. Ensuite, le flux de travail utilise le jeton pour effectuer une demande d’API via le GitHub CLI.Dans le flux de travail suivant, remplacez
APP_CLIENT_IDpar le nom de la variable de configuration où vous avez stocké votre ID client. RemplacezAPP_PRIVATE_KEYpar le nom du secret où vous avez stocké la clé privée de votre application.
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@v3
with:
client-id: ${{ vars.APP_CLIENT_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat
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@v3
with:
client-id: ${{ vars.APP_CLIENT_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat