05 Copilot CLI
Scripts, explications et fichiers avec CLI
Cette leçon contient des faits datés. Dates et sources
5.6 Génération de scripts shell
Définition
Copilot CLI peut t’aider à écrire des scripts shell.
C’est utile pour automatiser :
- nettoyage de fichiers ;
- recherche dans des logs ;
- backup ;
- compression ;
- analyse de dossiers ;
- tâches Git ;
- tâches Docker ;
- tâches Kubernetes ;
- tâches CI/CD.
Exemple simple : archiver des logs
Prompt :
Create a bash script that archives .log files older than 30 days into a tar.gz file.
Do not delete the original files.Script possible :
#!/usr/bin/env bash
set -euo pipefail
ARCHIVE_NAME="old-logs-$(date +%Y%m%d).tar.gz"
find . -type f -name "*.log" -mtime +30 -print0 \
| tar --null -czf "$ARCHIVE_NAME" --files-from=-
echo "Archive created: $ARCHIVE_NAME"Pourquoi ce script est plutôt correct ?
Il utilise :
set -euo pipefailpour rendre le script plus strict ;findpour chercher les fichiers ;-print0pour gérer les espaces dans les noms ;tar --nullpour lire les chemins correctement ;- pas de suppression automatique.
Exemple plus dangereux
Prompt trop vague :
Clean old logs.Copilot pourrait proposer :
find . -name "*.log" -mtime +30 -deleteCe n’est pas forcément mauvais, mais c’est destructif.
Meilleur prompt :
Create a safe bash script to find .log files older than 30 days.
First print the files that would be affected.
Do not delete anything unless a --delete flag is explicitly provided.Script plus responsable :
#!/usr/bin/env bash
set -euo pipefail
DELETE=false
if [[ "${1:-}" == "--delete" ]]; then
DELETE=true
fi
if [[ "$DELETE" == true ]]; then
find . -type f -name "*.log" -mtime +30 -print -delete
else
find . -type f -name "*.log" -mtime +30 -print
echo "Dry run only. Re-run with --delete to remove these files."
fiExemple DevOps : Docker
Prompt :
Create a shell script that builds a Docker image and tags it with the current Git commit SHA.Script possible :
#!/usr/bin/env bash
set -euo pipefail
IMAGE_NAME="my-app"
GIT_SHA="$(git rev-parse --short HEAD)"
docker build -t "${IMAGE_NAME}:${GIT_SHA}" .
echo "Built image ${IMAGE_NAME}:${GIT_SHA}"Exemple Kubernetes
Prompt :
Create a command to show pods using the most CPU in the current namespace.Commande possible :
kubectl top pods --sort-by=cpuAttention :
- nécessite Metrics Server ;
- dépend du contexte Kubernetes courant ;
- peut échouer selon les permissions.
Bon prompt pour générer un script
Create a bash script for [TASK].
Requirements:
- use strict mode
- include comments
- avoid destructive actions by default
- support dry-run mode
- validate required commands exist
- explain how to run it5.7 Explication de commandes
Définition
Copilot CLI peut expliquer une commande terminal existante.
C’est très utile pour :
- commandes longues ;
- options obscures ;
- scripts hérités ;
- commandes
find,awk,sed,tar,xargs; - commandes Docker/Kubernetes/Terraform ;
- commandes potentiellement dangereuses.
Exemple find
Commande :
find . -type f -name "*.log" -mtime +30 -deletePrompt :
Explain this command and identify risks:
find . -type f -name "*.log" -mtime +30 -deleteExplication attendue :
- cherche les fichiers dans le dossier courant ;
- filtre les fichiers réguliers ;
- garde ceux qui finissent par
.log; - garde ceux modifiés il y a plus de 30 jours ;
- les supprime.
Risque :
-delete supprime les fichiers définitivement.Exemple tar
Commande :
tar -czf archive.tar.gz ./srcExplication :
tarcrée une archive ;-ccrée une archive ;-zcompresse avec gzip ;-findique le nom du fichier archive ;./srcest le dossier archivé.
Exemple kubectl
Commande :
kubectl delete pods --all -n productionCopilot doit signaler que :
Cette commande supprime tous les pods du namespace production.
Même si Kubernetes peut les recréer via un Deployment, c’est une commande à haut impact.
Exemple Terraform
Commande :
terraform destroy -auto-approveExplication responsable :
Cette commande détruit l’infrastructure gérée par Terraform sans confirmation interactive.
Risque :
Très dangereux en production.
Très bon prompt d’explication
Explain this command step by step.
Identify destructive operations, security risks, and safer alternatives.À retenir pour l’examen
Copilot CLI est très adapté pour :
Expliquer une commande terminal inconnue ou risquée.Mais il ne faut pas :
Exécuter une commande générée ou expliquée sans validation.5.8 Gestion de fichiers avec Copilot CLI
Définition
Copilot CLI peut aider à travailler avec les fichiers d’un projet depuis le terminal.
Selon les permissions et le dossier trusted, il peut potentiellement :
- lire des fichiers ;
- analyser le contenu ;
- proposer des modifications ;
- créer des fichiers ;
- modifier des fichiers ;
- générer des scripts ;
- exécuter des commandes.
GitHub précise que pendant une session Copilot CLI, l’outil peut tenter de lire, modifier et exécuter des fichiers dans le dossier courant et ses sous-dossiers si tu as confirmé le trust. (docs.github.com)
Exemple : analyser un projet
Prompt :
Inspect this project and summarize its structure.
Do not modify any files.Réponse possible :
src/contains application source codetests/contains unit testspackage.jsondefines scripts and dependenciesDockerfilebuilds the runtime image
Exemple : créer un script
Prompt :
Create a scripts/backup-logs.sh script.
It should archive logs older than 7 days.
It must not delete files by default.Copilot peut créer :
scripts/backup-logs.shavec le contenu correspondant.
Exemple : modifier un fichier
Prompt :
Update package.json to add a test:coverage script using npm test -- --coverage.
Show me the diff before applying.Bonne pratique :
Toujours demander à voir le diff avant d’accepter.
Exemple : chercher des fichiers
Prompt :
Find all files that reference the deprecated function getUserByEmail.Commande possible :
grep -R "getUserByEmail" .Ou plus propre si ripgrep est installé :
rg "getUserByEmail"Exemple : générer un fichier README
Prompt :
Generate a README section explaining how to run this project locally.
Use package.json and Dockerfile as context.Copilot peut proposer un bloc Markdown.
Bonnes pratiques de gestion de fichiers
Toujours :
- Travailler dans un repo Git propre.
- Vérifier
git statusavant modification. - Demander un plan avant gros changement.
- Demander le diff avant d’accepter.
- Exécuter les tests.
- Relire les fichiers créés.
- Éviter les commandes destructives.
- Ne pas donner de secrets dans le prompt.
Workflow sûr
Avant une modification :
git statusAprès une modification :
git diffPuis :
npm testou :
pytestou :
mvn testselon le projet.
À retenir pour le GH-300
- Un bon prompt de script demande un résultat sûr par défaut : rien de supprimé, une simulation, une explication.
- Copilot CLI explique une commande inconnue ou risquée : on comprend avant d’exécuter.
- Pour modifier des fichiers : dépôt propre, périmètre limité, diff demandé avant d’appliquer, tests ensuite.
- Pour comprendre un projet sans risque, on demande une analyse et on précise de ne rien modifier.
Faits datés de cette leçon
Ces points changent avec le produit. Chacun indique quand il a été vérifié et où le contrôler.
- Fonctionnalités de Copilot, CLI et agents
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Un bon prompt de script demande un résultat sûr par défaut : rien de supprimé, une simulation, une explication.
- Copilot CLI explique une commande inconnue ou risquée : on comprend avant d’exécuter.
- Pour modifier des fichiers : dépôt propre, périmètre limité, diff demandé avant d’appliquer, tests ensuite.
- Pour comprendre un projet sans risque, on demande une analyse et on précise de ne rien modifier.
Objectif GH-300
- Scripts et fichiers CLI (Use GitHub Copilot CLI with scripts and files)
Achèvement
Il reste à faire : .