Introduction
Cet article explique comment rapidement bien démarrer avec l’API REST GitHub à l’aide de GitHub CLI, ou JavaScript. Pour obtenir un guide plus détaillé, consultez AUTOTITLE.
Utilisation de GitHub CLI dans la ligne de commande
GitHub CLI constitue la manière la plus facile d’utiliser l’API REST GitHub à partir de la ligne de commande.
-
Installez GitHub CLI sur macOS, Windows ou Linux. Pour en savoir plus, consultez Installation dans le référentiel GitHub CLI.
-
Pour vous authentifier sur GitHub, exécutez la commande suivante depuis votre terminal.
gh auth login -
Sélectionnez l'endroit où vous souhaitez vous authentifier :
- Si vous accédez à GitHub à GitHub.com, sélectionnez GitHub.com.
- Si vous accédez à GitHub sur un autre domaine, sélectionnez Autre , puis entrez votre nom d'hôte (par exemple :
octocorp.ghe.com).
-
Suivez les autres invites à l'écran.
GitHub CLI enregistre automatiquement vos identifiants Git lorsque vous choisissez HTTPS comme protocole préféré pour les opérations Git et que vous répondez « oui » à l'invite vous demandant si vous souhaitez vous authentifier sur Git avec vos identifiants GitHub. Ce procédé peut être utile car il vous permet d'utiliser les commandes Git telles que
git pushetgit pull, sans avoir à configurer un gestionnaire d'informations d'identification distinct ou à utiliser SSH. -
Exécutez une requête à l’aide de la sous-commande GitHub CLI (espace réservé), suivie du chemin d’accès. Utilisez l’indicateur ou pour spécifier la méthode. Pour plus d’informations, consultez la documentation de GitHub CLI .
Cet exemple interroge le point de terminaison « Get Octocat », qui utilise la méthode (espace réservé) et le chemin d’accès (espace réservé). Pour obtenir la documentation de référence complète de ce point de terminaison, consultez AUTOTITLE.
Shell gh api /octocat --method GET
gh api /octocat --method GET
Utilisation de GitHub CLI dans GitHub Actions
Vous pouvez aussi utiliser GitHub CLI dans vos workflows GitHub Actions. Pour plus d’informations, consultez « AUTOTITLE ».
S’authentifier avec un jeton d’accès
Au lieu d’utiliser la commande , passez un jeton d’accès en tant que variable d’environnement appelée . GitHub vous recommande d'utiliser la fonctionnalité intégrée plutôt que de créer un jeton. Si ce n’est pas possible, stockez votre jeton sous forme de secret et remplacez dans l’exemple ci-dessous par le nom de votre secret. Pour plus d’informations sur , consultez AUTOTITLE. Pour plus d’informations sur les secrets, consultez « AUTOTITLE ».
Le workflow suivant utilise le point de terminaison « List repository issues » et demande une liste des problèmes dans un référentiel que vous spécifiez . Remplacez (espace réservé) par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
Authentification avec l'GitHub App
Si vous vous authentifiez avec une GitHub App, vous pouvez créer un jeton d’accès d’installation au sein de votre workflow :
-
Stockez l’ID de votre GitHub App sous forme de variable de configuration. Dans l’exemple suivant, remplacez par le nom de la variable de configuration. Vous pouvez trouver votre ID d’application dans la page Paramètres de votre application ou via l’API. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations concernant les variables de configuration, consultez AUTOTITLE.
-
Générez une clé privée pour votre application. Stockez le contenu du fichier obtenu dans un secret. (Stockez l’intégralité du contenu du fichier, y compris et .) Dans l’exemple suivant, remplacez par le nom du secret. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations sur les secrets, consultez « AUTOTITLE ».
-
Ajoutez une étape pour générer un jeton, puis utilisez ce jeton au lieu de . Notez que ce jeton expire au bout de 60 minutes. Dans l’exemple suivant, remplacez par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel.
YAML on: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issueson: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
Utilisation d’Octokit.js
Vous pouvez utiliser Octokit.js pour interagir avec l’API REST GitHub dans vos scripts JavaScript. Pour plus d’informations, consultez Écriture de scripts avec l’API REST et JavaScript.
-
Créez un jeton d’accès. Par exemple, créez un personal access token ou un jeton d’accès utilisateur GitHub App. Vous utiliserez ce jeton pour authentifier votre demande. Vous devez donc lui accorder toutes les étendues ou autorisations requises pour accéder à ce point de terminaison. Pour plus d’informations, consultez Authentification auprès de l’API REST ou Identifier et autoriser les utilisateurs pour GitHub Apps.
Avertissement
Considérez le jeton d’accès comme un mot de passe.
Pour sécuriser votre jeton, vous pouvez stocker votre jeton sous forme de secret et exécuter votre script par le biais de GitHub Actions. Pour plus d’informations, consultez la section Utilisation d’Octokit.js dans GitHub Actions.
Si ces options ne sont pas possibles, envisagez d’utiliser un autre service CLI pour stocker votre jeton en toute sécurité.
-
Installez . Par exemple : . Pour découvrir d’autres manières d’installer ou de charger Octokit.js, consultez le fichier Lisez-moi d’Octokit.js.
-
Importez dans votre script. Par exemple : . Pour découvrir d’autres manières d’importer, consultez le README d’Octokit.js.
-
Créez une instance de (espace réservé) avec votre jeton. Remplacez (espace réservé) par le nom de votre instance GitHub Enterprise Server. Remplacez (espace réservé) par votre jeton.
JavaScript const octokit = new Octokit({ baseUrl: "http(s)://HOSTNAME/api/v3", auth: 'YOUR-TOKEN' });const octokit = new Octokit({ baseUrl: "http(s)://HOSTNAME/api/v3", auth: 'YOUR-TOKEN' }); -
Utilisez pour exécuter votre requête. Envoyez la méthode HTTP et le chemin en tant que premier argument. Spécifiez tous les paramètres de chemin, de requête et de corps dans un objet en tant que deuxième argument. Pour plus d’informations sur les paramètres, consultez AUTOTITLE.
Par exemple, dans la demande suivante, la méthode HTTP est , le chemin d’accès est , et les paramètres sont et .{ % ifversion ghes %} Remplacez par le nom du compte propriétaire du référentiel et par le nom du référentiel.{ % endif %}
JavaScript await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "REPO-OWNER", repo: "REPO-NAME", });await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "REPO-OWNER", repo: "REPO-NAME", });
Utilisation d’Octokit.js dans GitHub Actions
Vous pouvez aussi exécuter vos scripts JavaScript dans vos workflows GitHub Actions. Pour plus d’informations, consultez « AUTOTITLE ».
S’authentifier avec un jeton d’accès
GitHub vous recommande d’utiliser la fonctionnalité intégrée au lieu de créer un jeton. Si ce n’est pas possible, stockez votre jeton sous forme de secret et remplacez dans l’exemple ci-dessous par le nom de votre secret. Pour plus d’informations sur , consultez AUTOTITLE. Pour plus d’informations sur les secrets, consultez « AUTOTITLE ».
L'exemple de flux de travail suivant :
- Consulte le contenu du dépôt.
- Il configure Node.js.
- Installe (espace réservé)
- La valeur est stockée sous forme de variable d’environnement nommée , puis exécute , ce qui permet d’accéder à cette variable d’environnement en tant que .
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- name: Check out repo content
uses: actions/checkout@v5
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
run: |
node .github/actions-scripts/use-the-api.mjs
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
Voici un exemple de script JavaScript incluant le chemin d’accès au fichier (espace réservé). Remplacez (espace réservé) par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel.
import { Octokit } from "octokit"
const octokit = new Octokit({
baseUrl: "http(s)://HOSTNAME/api/v3",
auth: process.env.TOKEN
});
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "REPO-OWNER",
repo: "REPO-NAME",
});
const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})
console.log(titleAndAuthor)
} catch (error) {
console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
Authentification avec une GitHub App
Si vous vous authentifiez avec une GitHub App, vous pouvez créer un jeton d’accès d’installation au sein de votre workflow :
-
Stockez l’ID de votre GitHub App sous forme de variable de configuration. Dans l’exemple suivant, remplacez par le nom de la variable de configuration. Vous pouvez trouver votre ID d’application dans la page Paramètres de votre application ou via l’API d’application. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations concernant les variables de configuration, consultez AUTOTITLE.
-
Générez une clé privée pour votre application. Stockez le contenu du fichier obtenu dans un secret. (Stockez l’intégralité du contenu du fichier, y compris et .) Dans l’exemple suivant, remplacez par le nom du secret. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations sur les secrets, consultez « AUTOTITLE ».
-
Ajoutez une étape pour générer un jeton, puis utilisez ce jeton au lieu de . Notez que ce jeton expire au bout de 60 minutes. Par exemple :
on: workflow_dispatch: jobs: use_api_via_script: runs-on: ubuntu-latest steps: - name: Check out repo content uses: actions/checkout@v5 - name: Setup Node uses: actions/setup-node@v4 with: node-version: '16.17.0' cache: npm - name: Install dependencies run: npm install octokit - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Run script run: | node .github/actions-scripts/use-the-api.mjs env: TOKEN: ${{ steps.generate-token.outputs.token }}
Utilisation de dans la ligne de commande
Remarque
Si vous voulez créer des requêtes d’API à partir de la ligne de commande, GitHub vous recommande d’utiliser GitHub CLI, ce qui simplifie l’authentification et les requêtes. Pour plus d’informations sur la prise en main de l’API REST à l’aide de GitHub CLI, consultez la version GitHub CLI de cet article.
-
Installez s’il n’est pas déjà installé sur votre ordinateur. Pour vérifier si est installé, exécutez dans la ligne de commande. Si la sortie fournit des informations sur la version de (espace réservé), cela indique que (espace réservé) est installé. Si vous recevez un message comme , vous avez besoin de télécharger et d’installer . Pour plus d’informations, consultez la page de téléchargement du projet curl.
-
Créez un jeton d’accès. Par exemple, créez un personal access token ou un jeton d’accès utilisateur GitHub App. Vous utiliserez ce jeton pour authentifier votre demande. Vous devez donc lui accorder toutes les étendues ou autorisations requises pour accéder au point de terminaison. Pour plus d’informations, consultez « AUTOTITLE ».
Avertissement
Considérez le jeton d’accès comme un mot de passe.
Vous pouvez aussi utiliser GitHub CLI au lieu de . GitHub CLI s’occupe de l’authentification pour vous. Pour plus d’informations, consultez la version GitHub CLI de cette page.
Si ces options ne sont pas possibles, envisagez d’utiliser un autre service CLI pour stocker votre jeton en toute sécurité.
-
Utilisez la commande pour effectuer votre requête. Transférez votre token dans un en-tête. Remplacez cela par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel. Remplacez par votre jeton.
Shell curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"Remarque
Dans la plupart des cas, vous pouvez utiliser
Authorization: BearerouAuthorization: tokenpour passer un jeton. Toutefois, si vous passez un jeton web JSON (JWT), vous devez utiliserAuthorization: Bearer.
Utilisation de commandes dans GitHub Actions
Vous pouvez aussi utiliser des commandes dans vos workflows GitHub Actions.
S’authentifier avec un jeton d’accès
GitHub vous recommande d'utiliser la fonctionnalité intégrée plutôt que de créer un jeton. Si ce n’est pas possible, stockez votre jeton sous forme de secret et remplacez dans l’exemple ci-dessous par le nom de votre secret. Pour plus d’informations sur , consultez AUTOTITLE. Pour plus d’informations sur les secrets, consultez « AUTOTITLE ».
Dans l’exemple ci-après, remplacez par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
Authentification avec l'GitHub App
Si vous vous authentifiez avec une GitHub App, vous pouvez créer un jeton d’accès d’installation au sein de votre workflow :
-
Stockez l’ID de votre GitHub App sous forme de variable de configuration. Dans l’exemple suivant, remplacez par le nom de la variable de configuration. Vous pouvez trouver votre ID d’application dans la page Paramètres de votre application ou via l’API d’application. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations concernant les variables de configuration, consultez AUTOTITLE.
-
Générez une clé privée pour votre application. Stockez le contenu du fichier obtenu dans un secret. (Stockez l’intégralité du contenu du fichier, y compris et .) Dans l’exemple suivant, remplacez par le nom du secret. Pour plus d’informations, consultez « AUTOTITLE ». Pour plus d’informations sur le stockage de secrets, consultez AUTOTITLE.
-
Ajoutez une étape pour générer un jeton, puis utilisez ce jeton au lieu de . Notez que ce jeton expire au bout de 60 minutes. Dans l’exemple suivant, remplacez par le nom de votre instance GitHub Enterprise Server. Remplacez par le nom du compte propriétaire du référentiel. Remplacez par le nom du référentiel.
YAML on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
Étapes suivantes
Pour obtenir un guide plus détaillé, consultez Bien démarrer avec l’API REST.