🎨 Générer les captures du projet ASM #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: 🎨 Générer les captures du projet ASM | |
| on: | |
| # Permet de le lancer manuellement depuis l'onglet "Actions" de GitHub | |
| workflow_dispatch: | |
| jobs: | |
| build-and-capture: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 1. Récupérer le code | |
| uses: actions/checkout@v4 | |
| - name: 2. 🛠️ Installer les prérequis (ASM, X11, Outils) | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| nasm \ | |
| gcc \ | |
| make \ | |
| libx11-dev \ | |
| xvfb \ | |
| imagemagick | |
| - name: 3. ⚙️ Compiler tous les exécutables | |
| # La cible 'all' de votre Makefile génère tous les .out dans output/ | |
| run: make all | |
| - name: 4. Extraire les dimensions de la fenêtre | |
| run: | | |
| echo "Lecture de etapes/common.asm pour les dimensions..." | |
| # On cherche la ligne "%define WIDTH", on prend la 3ème colonne (le nombre) | |
| WINDOW_WIDTH=$(grep '%define WIDTH' etapes/common.asm | awk '{print $3}') | |
| # On cherche la ligne "%define HEIGHT", on prend la 3ème colonne (le nombre) | |
| WINDOW_HEIGHT=$(grep '%define HEIGHT' etapes/common.asm | awk '{print $3}') | |
| echo "Dimensions extraites: ${WINDOW_WIDTH}x${WINDOW_HEIGHT}" | |
| # On exporte ces valeurs dans l'environnement du Job | |
| echo "WINDOW_WIDTH=$WINDOW_WIDTH" >> $GITHUB_ENV | |
| echo "WINDOW_HEIGHT=$WINDOW_HEIGHT" >> $GITHUB_ENV | |
| - name: 5. 📸 Lancer et capturer chaque étape | |
| run: | | |
| # Crée le dossier pour les captures | |
| mkdir -p output/screenshots | |
| # Liste des exécutables à capturer (basé sur votre Makefile) | |
| LISTE_ETAPES="etape1 etape2 etape3 etape4_1 etape4_2" | |
| for etape in $LISTE_ETAPES; do | |
| echo "--- Lancement de $etape.out sur écran virtuel... ---" | |
| # Utilise les variables $WINDOW_WIDTH et $WINDOW_HEIGHT | |
| # (Note: ${...} est utilisé pour éviter que le 'x' soit confondu avec le nom de la variable) | |
| xvfb-run --auto-servernum -s "-screen 0 ${WINDOW_WIDTH}x${WINDOW_HEIGHT}x24" sh -c "./output/$etape.out & sleep 10; import -window root output/screenshots/$etape.png" | |
| # No need to manage DISPLAY or kill Xvfb manually | |
| done | |
| - name: 6. ⬆️ Publier les captures (Artifact) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: captures-circles-asm | |
| path: output/screenshots/ |