Ă 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.
-
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 ».
-
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 ».
-
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 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 ».
-
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-token
action, 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. RemplacezAPP_PRIVATE_KEY
par 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@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
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