Aller au contenu
A simple, flat 8-bit icon displays a geometric laptop alongside a cogwheel and checkmark, a stylized file tree linked by lines, a small cloud with an upload arrow, and a basic shield representing security. All elements use a five-color corporate palette, arranged on a transparent background in a 128x128 pixel square, with no people, text, shadows, or 3D effects.

Automatisation des scripts

AI generated translation.

Une fois que vous avez un script qui vous convient, vous pouvez l’automatiser en utilisant l’interface en ligne de commande.

L’utilisation de base de la CLI est de lancer un script avec un nom d’outil et une liste de fichiers.

Fenêtre de terminal
npx --yes genaiscript run <script_id> <...files>

<script_id> est le nom du script (par exemple le nom de fichier sans .genai.mjs) et <...files> est une liste de fichiers sur lesquels exécuter le script.

La CLI utilisera les secrets dans le fichier .env, remplira env.files avec <...files>, exécutera le script et affichera la sortie sur la sortie standard.

Vous pouvez utiliser la CLI pour exécuter vos scripts dans un pipeline CI/CD. La CLI renverra un code de sortie non nul si le script échoue, ce qui peut être utilisé pour faire échouer le pipeline.

Ajoutez l’option --apply-edits à la CLI pour écrire automatiquement les modifications dans les fichiers.

Fenêtre de terminal
npx --yes genaiscript run <script> <...files> --apply-edits

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. Cette section explique comment intégrer votre GenAIScript dans les workflows et demandes de tirage de GitHub Actions.

GitHub Models offrent un moyen intégré d’exécuter une inférence LLM à partir d’une action GitHub.

Pour utiliser GitHub Models, vous devez ajouter la permission models: read à votre workflow, transmettre le secret GITHUB_TOKEN à la CLI, et configurer la CLI pour utiliser GitHub Models. Cela peut se faire en définissant le fournisseur LLM sur github dans la CLI.

permissions:
models: read
...
- run: npx --yes genaiscript run <script> <...files> --provider github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Configurez les secrets et les variables sur votre dépôt ou organisation afin que GenAIScript puisse se connecter à votre LLM.

Les secrets et variables doivent correspondre au fichier .env de votre environnement local.

Utilisez la CLI pour exécuter le script dans une action GitHub.

  • Assurez-vous de transmettre les secrets et variables au script pour permettre l’accès au LLM.
  • Utilisez l’option --out <path> pour stocker les résultats dans un répertoire afin de pouvoir les télécharger comme artefact.
- run: npx --yes genaiscript run <script> <...files> --out results
env:
# variables
OPENAI_API_TYPE: ${{ env.OPENAI_API_TYPE }}
OPENAI_API_BASE: ${{ env.OPENAI_API_BASE }}
# secret, redacted
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

Utilisez l’option out-trace pour écrire la trace dans le fichier de résumé, $GITHUB_STEP_SUMMARY (voir exemple).

- run: npx --yes genaiscript run ... --out-trace $GITHUB_STEP_SUMMARY

Vous pouvez utiliser git.diff pour exécuter une commande git diff afin de récupérer les modifications dans la branche courante.

const changes = await git.diff({ base: "main" })
def("GIT_DIFF", changes, {
language: "diff",
maxTokens: 20000,
})

Notez que vous devrez récupérer la branche origin/main pour que cette commande fonctionne dans une action.

- run: git fetch origin && git pull origin main:main

Assurez-vous que le répertoire contenant les résultats est téléchargé comme artefact. Vous pouvez consulter la trace en ouvrant le fichier res.trace.md dans l’artefact compressé.

- uses: actions/upload-artifact@v4
if: always()
with:
path: |
genairesults/**

La documentation officielle de l’action azure login contient des étapes détaillées pour configurer l’accès aux ressources Azure depuis GitHub Actions.

  1. Créez un principal de service en suivant le guide connect from azure secret.

  2. Attribuez un rôle quelconque au principal de service (par exemple Lecteur) dans votre abonnement Azure. Vous en avez besoin pour vous connecter.

  3. Attribuez le rôle Cognitive Services OpenAI User au principal de service. Vous en avez besoin pour que le principal de service puisse accéder à la ressource OpenAI.

  4. Configurez le secret AZURE_CREDENTIALS dans votre dépôt GitHub avec les identifiants du principal de service.

    {
    "clientId": "<Client ID>",
    "clientSecret": "<Client Secret>",
    "subscriptionId": "<Subscription ID>",
    "tenantId": "<Tenant ID>"
    }
  5. Configurez la variable AZURE_OPENAI_API_ENDPOINT dans les variables GitHub Actions de votre dépôt.

  6. Ajoutez l’étape suivante dans votre workflow GitHub pour vous connecter à Azure.

    genai.yml
    - name: Azure Login action
    uses: azure/login@v2
    with:
    creds: ${{ secrets.AZURE_CREDENTIALS }}
  7. Mettez à jour chaque étape qui invoque la CLI pour inclure la variable AZURE_OPENAI_API_ENDPOINT.

    - name: run genai script
    run: npx --yes genaiscript run ...
    env:
    AZURE_OPENAI_API_ENDPOINT: ${{ env.AZURE_OPENAI_API_ENDPOINT }}

Si votre action GitHub est déclenchée par un événement de demande de tirage, vous pouvez utiliser les options suivantes pour ajouter des commentaires : description, conversation et revues.

Pour créer des commentaires, le workflow doit avoir la permission pull-requests: write et le secret GITHUB_TOKEN doit être transmis au script.

permissions:
pull-requests: write
...
- run: npx --yes genaiscript run ...
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...

L’option --pull-request-description insère la sortie du LLM dans la section de la demande de tirage (voir exemple). La commande accepte un argument optionnel de chaîne pour identifier de manière unique ce commentaire, il est utilisé pour mettre à jour le commentaire (par défaut c’est l’id du script).

- run: npx --yes genaiscript run --pull-request-description

Si vous souhaitez exécuter ce script lorsque la demande de tirage est prête pour révision, utilisez les événements ready_for_review, opened, reopened.

on:
pull_request:
types: [ready_for_review, opened, reopened]

L’option --pull-request-comment ajoute la sortie du LLM en tant que commentaire à la conversation de la demande de tirage (voir exemple). L’argument optionnel est un identifiant pour le commentaire (par défaut l’id du script) afin qu’un seul commentaire apparaisse pour cet id.

- run: npx --yes genaiscript run --pull-request-comment
env: ...

Utilisez l’option --pull-request-reviews pour convertir les annotations en commentaires de revue sur le dernier commit de la demande de tirage (voir exemple).

- run: npx --yes genaiscript run --pull-request-reviews
env: ...

GenAIScript essaiera automatiquement d’ignorer les commentaires de revue en double et de ne créer que les nouveaux.

Pour collecter les modifications du dernier commit dans la branche de la demande de tirage (voir article intéressant), vous pouvez essayer cette commande git :

const { stdout: changes } = await host.exec("git", [
"diff",
"HEAD^",
"HEAD",
"--",
"**.ts",
])