Aller au contenu
A retro 8-bit depiction shows a geometric computer screen featuring interconnected gears and a branching workflow diagram, representing automation and CI/CD processes. Beside it, a small server icon connects to a cloud through a pipeline, surrounded by abstract AI node designs, symbolizing GitHub Actions and AI model integration. The design uses a simple five-color palette with minimalistic elements.

GitHub Actions

AI generated translation.

GitHub Actions est une plateforme d’intégration continue et de livraison continue (CI/CD) qui vous permet d’automatiser votre pipeline de construction, de test et de déploiement. Vous pouvez créer des workflows qui construisent et testent chaque pull request vers votre dépôt, ou déployer les pull requests fusionnées en production.

Dernièrement, GitHub a également ajouté la possibilité d’utiliser les GitHub Models dans les actions.

La combinaison d’Actions et de Models vous permet d’exécuter GenAIScript dans le cadre de votre CI/CD.

Pour utiliser les Models dans une action GitHub, vous devez définir les permissions de l’action pour inclure models: read.

permissions:
models: read

GenAIScript supporte nativement les GitHub Models, vous pouvez donc l’utiliser directement dans votre workflow GitHub Actions.

La façon la plus simple d’utiliser GenAIScript dans une action GitHub est d’exécuter directement la CLI. Vous pouvez le faire en ajoutant une étape dans votre workflow qui exécute la commande genaiscript.

- uses: actions/setup-node@v4 # make sure node.js is installed
- name: Run GenAIScript
run: npx -y genaiscript run ...
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Assurez-vous d’inclure le GITHUB_TOKEN dans les variables d’environnement afin que GenAIScript puisse s’authentifier auprès des GitHub Models.

---
run: npx -y genaiscript run ...
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub supporte le packaging des tâches sous forme d’actions personnalisées, généralement dans un dépôt dédié. C’est un excellent moyen d’empaqueter un script IA et de le partager avec d’autres.

- name: Run AI Script
uses: <owner>/<repo>@<tag>
with:
github_token: ${{ secrets.GITHUB_TOKEN }}

La CLI GenAIScript fournit une commande pour générer/mettre à jour le code standard afin d’empaqueter un script sous forme d’une action conteneur Docker, ce qui permet de l’utiliser dans GitHub Actions quel que soit le langage utilisé pour écrire le script.

Pour commencer,

  1. Créez un nouveau dépôt pour votre action.

  2. Ouvrez un terminal à la racine de votre dépôt.

  3. Exécutez la commande pour générer le squelette de l’action :

    Fenêtre de terminal
    npx -y genaiscript configure action

Le générateur de squelette d’action va écraser les fichiers suivants :

  • action.yml Fichier des métadonnées de l’action
  • Dockerfile Dockerfile pour l’action
  • README.md Documentation pour l’action
  • .gitignore Fichiers à ignorer dans le dépôt
  • .github/workflows/ci.yml Workflow CI pour tester l’action
  • package.json Configuration du package pour l’action
  • devcontainer/devcontainer.json Configuration du devcontainer pour VS Code
  • devcontainer/Dockerfile Dockerfile du devcontainer pour VS Code. Doit être synchronisé avec le Dockerfile de l’action.

Pour mettre à jour le squelette de l’action, vous pouvez relancer la même commande :

Fenêtre de terminal
npm run configure

Le fichier action.yml contient les métadonnées de l’action. Elles sont extraites de différentes parties de votre projet :

  • Le name est dérivé de l’identifiant du script.
  • La description est dérivée du title du script.
  • Les inputs sont dérivés des paramètres du script (voir ci-dessous).

Notez que la script.description est utilisée pour remplir le fichier README.md.

La section inputs du fichier action.yml est générée automatiquement à partir des paramètres du script. Chaque paramètre est converti en une entrée (input) portant le même nom, et le type est inféré à partir du type du paramètre.

poem.genai.mts
script({
title: "A poem generator",
accept: "none",
parameters: {
topic: "nature"
}
})
$`Write a poem about ${env.vars.topic}`.

Le fichier action.yml généré ressemblera à ceci :

action.yml
name: poem
description: Write a poem about nature
inputs:
topic:
description: The topic of the poem
required: false
default: nature

Il existe aussi des champs additionnels communs à toutes les actions GenAIScript :

  • files : Spécifie un chemin de fichier pour alimenter la variable env.files. Pour retirer ce champ, mettez accept: "none" dans le script.
  • github_token : Cela est requis pour s’authentifier auprès des GitHub Models.
    Il deviendra INPUT_GITHUB_TOKEN lorsque le conteneur sera créé et GenAIScript le détectera automatiquement.
  • github_issue : Le numéro actuel de l’issue ou de la pull request GitHub.
  • debug : Le filtre pour contrôler les messages de logging de débogage.

L’action remplit quelques champs de sortie.

  • text : le texte généré par le script.
  • data : la structure de sortie analysée et convertie en chaîne JSON. Ce champ est rempli si vous fournissez un responseSchema dans le script et si le LLM peut générer une réponse conforme au schéma.

Le champ branding du script est utilisé pour personnaliser l’apparence de l’action dans l’interface GitHub.

script({
branding: {
icon: "pencil",
color: "blue",
},
})

Par défaut, GenAIScript utilise node:lts-alpine comme image de base pour le conteneur de l’action.
Vous pouvez changer cela en spécifiant une autre image de base dans la cli.

npx -y genaiscript configure action ... --image <image>

GenAIScript créera également un devcontainer afin que vous puissiez développer l’action dans un environnement conteneurisé (presque identique) à celui où elle s’exécute dans GitHub Action.

Pour garder le conteneur d’action léger, GenAIScript n’inclut pas ffmpeg, playwright ni d’autres paquets par défaut.
Vous pouvez les ajouter au conteneur en les spécifiant dans la commande de la cli.

Fenêtre de terminal
npx -y genaiscript configure action ... --ffmpeg --playwright

Vous pouvez également ajouter tous les autres paquets nécessaires en les indiquant dans la commande cli.

Fenêtre de terminal
npx -y genaiscript configure action ... --apks <package1> <package2>

Votre script devrait être testable localement en utilisant la commande npm run dev. N’hésitez pas à la modifier dans package.json.

Fenêtre de terminal
npm run dev

Ou si vous souhaitez simuler l’environnement GitHub Action, vous pouvez définir les variables INPUT_<paramètre> dans l’environnement.

Fenêtre de terminal
INPUT_TOPIC=nature genaiscript run poem

Lors de l’exécution de l’action dans un conteneur, le contenu du dépôt de l’action est d’abord copié dans le répertoire /github/action. GitHub clone le dépôt dans le répertoire /github/workspace.

Le ENTRYPOINT du Dockerfile est configuré pour lancer la CLI genaiscript dans le répertoire /github/action, puis il détecte la variable d’environnement GITHUB_WORKSPACE pour déterminer le répertoire de travail et change le cwd en conséquence.

Ce mode est activé par l’option --github-workspace dans la commande cli.


Traduit par IA. Veuillez vérifier le contenu pour plus de précision.