GitHub
Le module github fournit plusieurs fonctions utilitaires pour interroger GitHub, ainsi que les informations de connexion pour un usage plus avancé.
Configuration
Section intitulée « Configuration »La configuration de github est automatiquement détectée à partir de l’environnement et de git.
- Le jeton GitHub est lu à partir de la variable d’environnement
GITHUB_TOKEN. Certaines requêtes peuvent fonctionner sans authentification pour les dépôts publics. - Le numéro du ticket ou de la pull request en cours est automatiquement détecté à partir de la variable d’environnement
GITHUB_ISSUE. Il est défini lors d’une action de pull request, mais vous pouvez aussi le définir manuellement.
GitHub CodeSpaces
Section intitulée « GitHub CodeSpaces »Dans un CodeSpace GitHub, le GITHUB_TOKEN est automatiquement fourni.
GitHub Actions
Section intitulée « GitHub Actions »Dans GitHub Actions, vous devrez peut-être ajouter des autorisations à l’espace de travail pour accéder aux journaux de workflow, aux pull requests ou aux modèles Marketplace.
De plus, vous devez transmettre le secret.GITHUB_TOKEN lors de l’exécution du script GenAIScript.
Lisez le guide sur GitHub Actions pour plus de détails.
permissions: contents: read actions: read pull-requests: read # or write if you plan to create comments models: read # access to GitHub Marketplace Models... - run: npx --yes genaiscript ... env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ...Fonctions
Section intitulée « Fonctions »Tickets (Issues)
Section intitulée « Tickets (Issues) »Vous pouvez interroger les tickets et leurs commentaires en utilisant listIssues et listIssueComments.
const issues = await github.listIssues({ per_page: 5 })console.log(issues.map((i) => i.title))
// Use issue number!const issueComments = await github.listIssueComments(issues[0].number)console.log(issueComments)- mettre à jour un ticket :
await github.updateIssue(issues[0].number, { title: "New title", body: "New body",})- créer des commentaires sur un ticket :
// Use issue number!await github.createIssueComment(issueNumber, "Hello, world!")- lister les labels d’un ticket
const labels = await github.listIssueLabels(issueNumber)console.log(labels.map((i) => i.name))- lister les labels des tickets pour le dépôt
const labels = await github.listIssueLabels()Pull Requests
Section intitulée « Pull Requests »Interrogez les pull requests et les commentaires de revue de pull request à l’aide de listPullRequests et listPullRequestReviewComments.
const prs = await github.listPullRequests({ per_page: 5 })console.log(prs.map((i) => i.title))
// Use pull request number!const prcs = await github.listPullRequestReviewComments(prs[0].number)console.log(prcs.map((i) => i.body))Dans GitHub Actions, assurez-vous que l’autorisation pull-request: read est accordée.
Exécutions de workflow
Section intitulée « Exécutions de workflow »Accédez au journal des exécutions de workflow pour analyser les échecs avec listWorkflowRuns.
// List runsconst runs = await github.listWorkflowRuns("build.yml", { per_page: 5 })console.log(runs.map((i) => i.status))
const jobs = await github.listWorkflowJobs(runs[0].id)// Redacted job logconsole.log(jobs[0].content)Dans GitHub Actions, accordez l’autorisation actions: read.
Artifacts
Section intitulée « Artifacts »Les workflows peuvent créer et attacher des artefacts lors de l’exécution du workflow.
Vous pouvez lister et télécharger ces artefacts à l’aide de listWorkflowArtifacts et downloadArtifact.
const artifacts = await github.listWorkflowArtifacts(runs[0].id)console.log(artifacts)
const artifact = artifacts[0]// genaiscript automatically unzips the artifactconst files = await github.downloadArtifact(artifact.id)console.log(files)Les URL d’assets image ou vidéo téléversées via l’interface GitHub peuvent être résolues via resolveAssetUrl.
Elles sont typiquement sous la forme https://github.com/.../assets/<uuid>. La fonction retourne une URL à durée de vie limitée contenant un jeton d’accès intégré pour télécharger l’asset.
const url = await github.resolveAssetUrl( "https://github.com/user-attachments/assets/a6e1935a-868e-4cca-9531-ad0ccdb9eace")console.log(url)Recherche de code
Section intitulée « Recherche de code »Utilisez searchCode pour effectuer une recherche de code sur la branche par défaut dans le même dépôt.
const res = await github.searchCode("HTMLToText")console.log(res)Récupérer le contenu d’un fichier
Section intitulée « Récupérer le contenu d’un fichier »Récupérez le contenu d’un fichier pour une référence, un tag ou un SHA de commit donné à l’aide de getFile.
const pkg = await github.getFile("package.json", "main")console.log(pkg.content.slice(0, 50) + "...")Récupérer le contenu d’un dépôt
Section intitulée « Récupérer le contenu d’un dépôt »Listez les fichiers ou dossiers à un chemin donné dans un dépôt distant. Par défaut, le contenu des fichiers d’un répertoire n’est pas chargé. Utilisez downloadContent: true.
// Get top-level markdown filesconst files = await github.getRepositoryContent("", { type: "file", glob: "*.md", downloadContent: true, maxDownloadSize: 2_000,})Téléverser un asset
Section intitulée « Téléverser un asset »Cette API nécessite l’autorisation contents: write dans GitHub Actions.
Elle téléverse les données dans une branche orpheline du dépôt
et retourne l’URL de l’asset téléversé.
const url = await github.uploadAsset(file)console.log(url)L’URL peut être utilisée dans le markdown dans les commentaires ou les tickets.
Langages
Section intitulée « Langages »Interrogez la liste des langages de programmation que GitHub a détectés pour le dépôt à l’aide de listRepositoryLanguages.
const languages = await github.listRepositoryLanguages()Branches
Section intitulée « Branches »Listez les branches du dépôt avec listBranches.
const branches = await github.listBranches()console.log(branches)Releases
Section intitulée « Releases »Listez les releases du dépôt avec listReleases.
const releases = await github.listReleases()console.log(releases)Accès Octokit
Section intitulée « Accès Octokit »Utilisez octokit pour accéder à l’ensemble des API GitHub.
import { Octokit } from "@octokit/core"
const { client }: { client: Octokit } = await github.api()...Installez octokit dans votre liste de paquets :
npm i -D octokitpnpm add -D octokityarn add -D octokitTravailler sur un autre dépôt
Section intitulée « Travailler sur un autre dépôt »Utilisez client pour ouvrir un client GitHub sur un autre dépôt en utilisant les mêmes secrets.
const client = github.client("owner", "repo")