Skip to content

Latest commit

 

History

History
172 lines (124 loc) · 4.05 KB

File metadata and controls

172 lines (124 loc) · 4.05 KB

🚀 GitHub Actions Multi-Platform Build

📋 Vue d'Ensemble

Ce projet utilise GitHub Actions pour générer automatiquement des exécutables pour Windows, Linux et macOS.

✨ Fonctionnalités Automatisées

  • 🔨 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

🏗️ Workflows Configurés

1. build-executables.yml - Build Principal

Déclencheurs :

  • Push sur main ou develop
  • Tags v* (ex: v1.0.0)
  • Pull Requests vers main
  • Manuel (workflow_dispatch)

Plateformes supportées :

  • 🪟 WindowsMinuteur.exe + DLL
  • 🐧 LinuxMinuteur + bibliothèques
  • 🍎 macOSMinuteur + frameworks

Sortie :

  • Artifacts téléchargeables pendant 90 jours
  • Release GitHub automatique pour les tags

2. test-build.yml - Tests Rapides

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)

📥 Comment Utiliser

Développement Quotidien

git push origin main
# → Test build automatique

Créer une Release

# 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

Build Manuel

# Via l'interface GitHub
Actions → "Build Multi-Platform Executables""Run workflow"

📊 Structure des Artifacts

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
└── ...

🔧 Configuration Technique

Variables d'Environnement

  • PYTHON_VERSION: "3.12"
  • APP_NAME: "Minuteur"
  • DISPLAY: :99 (Linux CI)

Dépendances Automatiques

  • 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

Optimisations CI

  • Cache Poetry partagé entre runs
  • Build parallèle sur 3 OS
  • Timeouts configurés (10min max)
  • Tests non-bloquants pour GUI

🐛 Résolution de Problèmes

Build Échoue

  1. Vérifier les logs : Actions → Job échoué → Logs détaillés
  2. Dépendances manquantes : Vérifier poetry.lock
  3. Problèmes PyInstaller : Consulter les options par OS dans build_exe_ci.py

Tests GUI Échouent

# Normal en CI - pas d'interface graphique
continue-on-error: true

Cache Problématique

# Invalider le cache via interface GitHub
Actions → Caches → Delete

📈 Métriques Typiques

  • 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

🔒 Sécurité

  • Secrets utilisés : Seulement GITHUB_TOKEN (automatique)
  • Permissions : Lecture du repo + création de releases
  • Sandboxing : Chaque job isolé dans une VM propre

🚀 Évolutions Futures

  • 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 🎯