Compilation, Packaging et CI/CD
Gens-Launcher utilise electron-builder pour générer les paquets de distribution officiels pour Windows, macOS et Linux.
1. Prérequis de Développement
- Node.js : Version 20 LTS ou 24 recommandée.
- Gestionnaire de paquets :
npm(version 10 ou supérieure). - Système d'exploitation :
- La compilation Windows (
.exeNSIS) s'effectue sous Windows ou via Wine/Docker. - La compilation macOS (
.dmg) requiert un environnement macOS (ou une machine virtuelle de build GitHub Actionsmacos-latest). - La compilation Linux (
.AppImage,.deb) s'effectue nativement sous Linux.
- La compilation Windows (
2. Commandes de Compilation Locale
À la racine du projet, vous disposez des scripts suivants :
bash
# Lancer le projet en mode développement avec hot-reloading
npm start
# Exécuter la suite de tests unitaires (Node.js test runner)
npm test
# Générer l'installateur Windows (.exe NSIS dans dist/)
npm run dist:win
# Générer les paquets Linux (.deb et .AppImage dans dist/)
npm run dist:linux
# Générer l'image disque macOS (.dmg dans dist/)
npx electron-builder --mac
# Générer l'ensemble des cibles
npm run dist:all3. Configuration electron-builder
Dans le fichier package.json, la section build définit les métadonnées de packaging :
json
{
"build": {
"appId": "com.gens.launcher",
"productName": "Gens Launcher",
"directories": {
"output": "dist"
},
"win": {
"target": ["nsis"],
"icon": "assets/icon.ico"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true
},
"linux": {
"target": ["AppImage", "deb"],
"category": "Game",
"icon": "assets/icon-512.png"
},
"mac": {
"target": ["dmg", "zip"],
"icon": "assets/icon-512.png",
"category": "public.app-category.games"
}
}
}4. Pipeline CI/CD et Dépôt APT Automatisé (apt.yml)
Lorsqu'une nouvelle release est publiée sur GitHub, le workflow .github/workflows/apt.yml prend le relais automatiquement :
[ Déclencheur GitHub Release ]
|
v
[ Téléchargement du .deb compilé ]
|
v
[ Préparation du dossier de staging apt-workspace/ ]
- Copie de la clé publique GPG (public.key)
- Copie de l'intégralité du site vitrine et documentation (website/*)
|
v
[ Génération de l'index Debian ]
- dpkg-scanpackages --multiversion . > Packages
- gzip -k -f Packages
- apt-ftparchive release . > Release
|
v
[ Signature Cryptographique GPG ]
- gpg -abs -o Release.gpg Release
- gpg --clearsign -o InRelease Release
|
v
[ Déploiement vers GitHub Pages ]
- Mise en ligne atomique sur williambossard.github.io/Gens-Launcher/Grâce à cette organisation, les utilisateurs de Debian et Ubuntu bénéficient d'un canal de mise à jour sécurisé et automatisé sans intervention manuelle.