Ce tutoriel vous guide tout au long de l’utilisation de l’authentification GITHUB_TOKEN dans GitHub Actions les flux de travail, notamment des exemples de passage du jeton à des actions, d’exécution de demandes d’API et de configuration des autorisations pour l’automatisation sécurisée.
Pour obtenir des informations de référence, consultez Syntaxe de flux de travail pour GitHub Actions.
Utilisation de GITHUB_TOKEN dans un workflow
Vous pouvez utiliser GITHUB_TOKEN en utilisant la syntaxe standard pour référencer les secrets : ${{ secrets.GITHUB_TOKEN }}. Par exemple, parmi les utilisations du GITHUB_TOKEN, on peut citer le passage du jeton comme entrée d’une action, ou son utilisation pour effectuer une requête API authentifiée GitHub.
Important
Une action peut accéder au GITHUB_TOKEN via le contexte github.token même si le workflow ne passe pas explicitement le GITHUB_TOKEN à l’action. En tant que bonne pratique de sécurité, vous devez toujours vous assurer que les actions ont uniquement l’accès minimal requis en limitant les autorisations accordées au GITHUB_TOKEN. Pour plus d’informations, consultez « Syntaxe de flux de travail pour GitHub Actions ».
Exemple 1 : passage du GITHUB_TOKEN en tant qu’entrée
Cet exemple de flux de travail utilise leCLI GitHub, qui nécessite GITHUB_TOKEN en tant que valeur du paramètre d’entrée de GH_TOKEN :
name: Open new issue
on: workflow_dispatch
jobs:
open-issue:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- run: |
gh issue --repo ${{ github.repository }} \
create --title "Issue title" --body "Issue body"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Open new issue
on: workflow_dispatch
jobs:
open-issue:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- run: |
gh issue --repo ${{ github.repository }} \
create --title "Issue title" --body "Issue body"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Exemple 2 : appel de l’API REST
Vous pouvez utiliser le GITHUB_TOKEN pour effectuer des appels d’API authentifiés. Cet exemple de flux de travail crée un problème à l’aide de l’API GitHub REST :
name: Create issue on commit
on: [ push ]
jobs:
create_issue:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create issue using REST API
run: |
curl --request POST \
--url https://api.github.com/repos/${{ github.repository }}/issues \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ github.sha }}",
"body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
}' \
--fail
Modification des autorisations pour GITHUB_TOKEN
Utilisez la clé permissions dans votre fichier de workflow pour modifier les autorisations du GITHUB_TOKEN pour un workflow entier ou pour des travaux individuels. Cela vous permet de configurer les autorisations minimales requises pour un workflow ou un travail. En guise de bonne pratique de sécurité, vous devez accorder à GITHUB_TOKEN le moins d’accès requis.
Pour consulter la liste des autorisations disponibles et leurs noms paramétrés, consultez Gestion de vos jetons d’accès personnels.
Les deux exemples de workflows plus haut dans cet article montrent la clé permissions utilisée au niveau du travail.
Octroi d’autorisations supplémentaires
Si vous avez besoin d’un jeton qui nécessite des autorisations qui ne sont pas disponibles dans le GITHUB_TOKEN, créez un GitHub App jeton d’accès d’installation et générez un jeton d’accès d’installation dans votre flux de travail. Pour plus d’informations, consultez « Effectuer des requêtes d’API authentifiées avec une application GitHub dans un flux de travail GitHub Actions ». Sinon, vous pouvez créer un personal access token, le stocker comme secret dans votre dépôt et utiliser le jeton dans votre flux de travail en utilisant la syntaxe ${{ secrets.SECRET_NAME }}. Pour plus d’informations, consultez « Gestion de vos jetons d’accès personnels » et « Utilisation de secrets dans GitHub Actions ».