Qu’est-ce que GitHub Script ?
Dans cette unité, vous découvrirez comment GitHub Script vous permet d’automatiser les processus GitHub courants à l’aide de flux de travail GitHub Actions.
Qu’est-ce que GitHub Script ?
GitHub Script est une action qui fournit un client Octokit authentifié et qui permet d’écrire en JavaScript directement dans un fichier de workflow. Il s’exécute en Node.js, donc vous bénéficiez de la puissance de cette plateforme lorsque vous écrivez des scripts.
Qu’est-ce qu’Octokit ?
Octokit est la collection officielle de clients pour l’API GitHub. L’un de ces clients, rest.js, offre un accès JavaScript à l’interface REST de GitHub.
Vous avez toujours eu la possibilité d’automatiser l’API GitHub via octokit/rest.js, bien que cela puisse être fastidieux à configurer et à gérer correctement. L’un des grands avantages de l’utilisation de GitHub Script est qu’il gère toute cette surcharge, ce qui vous permet de commencer immédiatement à utiliser l’API. Vous n’avez pas besoin de vous soucier des dépendances, de la configuration ou même de l’authentification.
Que peut faire octokit/rest.js ?
En deux mots, il peut faire pratiquement n’importe quoi concernant l’automatisation de GitHub. Outre l’accès aux validations, aux demandes de tirage et aux problèmes, vous avez également accès aux utilisateurs, aux projets et aux organisations. Vous pouvez récupérer des listes de fichiers couramment utilisés, tels que des licences populaires ou des fichiers .gitignore. Vous pouvez même afficher le langage Markdown.
Si vous créez quelque chose qui intègre GitHub, vous avez de fortes chances de trouver ce que vous cherchez dans la documentation complète d’octokit/rest.js.
En quoi l’utilisation de GitHub Script est différente de celle d’octokit/rest.js ?
La principale différence au niveau de l’utilisation est que GitHub Script fournit un client octokit/rest.js préauthentifié appelé github.
Ainsi, au lieu de
octokit.issues.createComment({
vous utilisez
github.issues.createComment({.
En plus de la variable github, les variables suivantes sont également fournies :
-
contextest un objet qui contient le contexte de l’exécution du flux de travail. -
coreest une référence au package @actions/core . -
ioest une référence au package @actions/io .
Création d’un flux de travail qui utilise GitHub Script
Les actions de GitHub Script s’intègrent à un workflow comme n’importe quelle autre action. Par conséquent, vous pouvez même les combiner avec des flux de travail existants, comme ceux que vous avez déjà configurés pour CI/CD. Pour illustrer l’aspect pratique de GitHub Script, vous allez maintenant créer un flux de travail complet qui l’utilise pour publier automatiquement un commentaire sur tous les billets nouvellement créés.
Vous commencerez par une clause name et une clause on qui spécifie que le flux de travail s’exécute quand les problèmes sont ouverts :
name: Learning GitHub Script
on:
issues:
types: [opened]
Puis vous définirez une tâche nommée comment qui s’exécutera sur Linux avec une série d’étapes :
jobs:
comment:
runs-on: ubuntu-latest
steps:
Dans le cas présent, il n’y a qu’une seule étape : l’action GitHub Script.
- uses: actions/github-script@0.8.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🎉 You've created this issue comment using GitHub Script!!!"
})
GitHub Actions peut vraiment vous aider à automatiser les événements qui se produisent dans vos dépôts. Imaginez qu’un visiteur du dépôt ouvre un nouveau problème contenant des informations sur un bogue critique. Vous voudrez probablement le remercier de vous avoir signalé le bogue, mais cette tâche simple peut devenir fastidieuse à mesure que votre référentiel attire davantage de visiteurs. En automatisant un commentaire en réponse à un problème, vous pouvez automatiser le processus consistant à remercier systématiquement les visiteurs.
Utilisations d’actions/github-script@0.8.0
L’action actions/github-script@0.8.0, également connue sous le nom de GitHub Script, effectue le gros du travail pour votre intégration avec l’API GitHub.
Cette action nécessite un github-token qui est fourni lors de l’exécution afin que les demandes soient authentifiées. C’est fait automatiquement pour vous, ce qui vous permet d’utiliser ce code tel quel.
Le paramètre script peut être quasiment n’importe quel JavaScript qui utilise le client octokit/rest/js stocké dans github. Ici, il s’agit d’une seule ligne (divisée en plusieurs lignes pour une meilleure lisibilité) qui crée un commentaire codé en dur.
Une fois le flux de travail exécuté, GitHub Script enregistre le code qu’il a exécuté pour révision sous l’onglet Actions :
Exécution à partir d’un fichier distinct
Vous devrez peut-être parfois utiliser une quantité importante de code pour répondre à votre scénario de script GitHub. Si le cas se présente, vous pouvez garder le script dans un fichier distinct et le référencer à partir du workflow au lieu de placer l’ensemble du script inline.
Voici un exemple de flux de travail simple qui utilise cette technique :
on: push
jobs:
echo-input:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/github-script@v2
with:
script: |
const path = require('path')
const scriptPath = path.resolve('./path/to/script.js')
console.log(require(scriptPath)({context}))
Consultez d’autres exemples de script GitHub.