Ce projet utilise GitHub Actions pour générer automatiquement des exécutables pour Windows, Linux et macOS.
- 🔨 Build automatique sur 3 plateformes
- 📦 Artifacts téléchargeables pour chaque OS
- 🚀 Releases GitHub automatiques avec tags
- 🧪 Tests de validation sur chaque commit
- 💾 Cache intelligent Poetry pour accélérer les builds
Déclencheurs :
- Push sur
mainoudevelop - Tags
v*(ex:v1.0.0) - Pull Requests vers
main - Manuel (
workflow_dispatch)
Plateformes supportées :
- 🪟 Windows →
Minuteur.exe+ DLL - 🐧 Linux →
Minuteur+ bibliothèques - 🍎 macOS →
Minuteur+ frameworks
Sortie :
- Artifacts téléchargeables pendant 90 jours
- Release GitHub automatique pour les tags
Déclencheurs :
- Chaque push/PR affectant le code
- Validation rapide sur Linux uniquement
Objectif :
- Vérifier que le build fonctionne avant merge
- Feedback rapide (~5 minutes vs ~15 minutes)
git push origin main
# → Test build automatique# 1. Créer et pousser un tag
git tag v1.0.0
git push origin v1.0.0
# 2. GitHub Actions:
# - Build automatique sur 3 OS
# - Création de la release
# - Upload des archives
# 3. Résultat:
# - https://github.com/user/repo/releases/v1.0.0
# - minuteur-windows.zip
# - minuteur-linux.tar.gz
# - minuteur-macos.tar.gz# Via l'interface GitHub
Actions → "Build Multi-Platform Executables" → "Run workflow"minuteur-windows/
├── Minuteur.exe # Exécutable principal
├── _internal/ # Bibliothèques Python/DLL
├── README.txt # Instructions utilisateur
└── ...
minuteur-linux/
├── Minuteur # Exécutable principal
├── _internal/ # Bibliothèques .so
├── README.txt
└── ...
minuteur-macos/
├── Minuteur # Exécutable principal
├── _internal/ # Frameworks/dylib
├── README.txt
└── ...
PYTHON_VERSION:"3.12"APP_NAME:"Minuteur"DISPLAY::99(Linux CI)
- Poetry pour la gestion des packages
- PyInstaller pour la génération d'exécutables
- Xvfb pour l'affichage virtuel Linux
- Cache Poetry pour accélérer les builds
- Cache Poetry partagé entre runs
- Build parallèle sur 3 OS
- Timeouts configurés (10min max)
- Tests non-bloquants pour GUI
- Vérifier les logs : Actions → Job échoué → Logs détaillés
- Dépendances manquantes : Vérifier
poetry.lock - Problèmes PyInstaller : Consulter les options par OS dans
build_exe_ci.py
# Normal en CI - pas d'interface graphique
continue-on-error: true# Invalider le cache via interface GitHub
Actions → Caches → Delete-
Temps de build :
- Windows: ~8-12 minutes
- Linux: ~6-10 minutes
- macOS: ~10-15 minutes
-
Taille des artifacts :
- Windows: ~60-80 MB
- Linux: ~55-75 MB
- macOS: ~70-90 MB
- Secrets utilisés : Seulement
GITHUB_TOKEN(automatique) - Permissions : Lecture du repo + création de releases
- Sandboxing : Chaque job isolé dans une VM propre
- Code signing pour Windows/macOS
- Installateurs (.msi, .dmg, .deb)
- Tests automatisés des exécutables
- Déploiement sur stores d'applications
Workflow créé pour une distribution professionnelle multi-plateforme 🎯