Skip to content

🎨 Générer les captures du projet ASM #10

🎨 Générer les captures du projet ASM

🎨 Générer les captures du projet ASM #10

Workflow file for this run

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/