Systém / vývoj
CompileHelper
0.1.0.0
Grafické rozhraní pro sestavování Python aplikací do samostatných Windows EXE pomocí PyInstalleru. Pomáhá vybrat projekt, entry point, ikonu, build profil a další parametry bez ručního skládání dlouhých příkazů.
Co projekt řeší
Grafické rozhraní pro sestavování Python aplikací do samostatných Windows EXE pomocí PyInstalleru. Pomáhá vybrat projekt, entry point, ikonu, build profil a další parametry bez ručního skládání dlouhých příkazů.
Jak aplikace funguje a k čemu slouží
Přehled aplikace
CompileHelper řeší opakovatelný build workflow napříč větším počtem app. Hlavní hodnota je sjednocení parametrů kompilace, snížení ručního přepisování příkazů, centralizace logů a lepší release disciplína.
- Orchestrace: výběr jedné nebo více app z discovery seznamu.
- Konzistence: profile-driven build režimy (onefile/onedir, console/noconsole).
- Diagnostika: živý log, incidentní triáž, reprodukovatelné nastavení.
- Audit: možnost standardizovat release artefakty a QA záznamy.
Co aplikace řeší (a co ne)
Co řeší
- Dávkovou kompilaci více Python app do EXE.
- Vizuální přehled kandidátů nalezených přes README discovery.
- Parametrizaci PyInstaller běhů z jednoho místa.
- Opakovatelnost buildů přes persistované nastavení.
Co není cílem
- Plnohodnotný CI server (GitHub Actions/Jenkins nenahrazuje).
- Automatické code signing a release upload.
- Cross-platform packaging orchestrace pro všechny OS varianty.
UI Layout a operátorské ovládání
- Seznam aplikací: tabulka nalezených kandidátů (multiselect).
- Build přepínače: onefile, noconsole, clean, volitelné bundly.
- Output panel: volba cílového adresáře a naming policy.
- Log panel: real-time build výstup s diagnostickými signály.
- Ovládací tlačítka: Compile, Compile All, Refresh, Stop.
- Status row: aktivní app, krok pipeline, elapsed a výsledek.
Výstupy, struktura artifactů a naming
| Artifact | Doporučený pattern | Poznámka |
|---|---|---|
| EXE output | Jednoznačná identifikace buildu. | |
| Build log | Archivace pro diagnostiku. | |
| Batch summary | Stav všech app v dávce. | |
| Incident note | Forenzní stopa při failu. |
Troubleshooting (operátorský playbook)
| Symptom | Pravděpodobná příčina | Doporučené řešení |
|---|---|---|
| PyInstaller command fail | Neaktivní env nebo chybějící balík | Aktivuj env, ověř instalaci, opakuj. |
| EXE padá hned po startu | Missing plugin/import | Zapni console build, doplň hidden-import. |
| Qt UI bez ikon/assetů | Chybí add-data | Přidej asset bundling do build profilu/.spec. |
| Build extrémně dlouhý | Clean mode + velký dependency set | Vypni clean, optimalizuj profil. |
| Antivirus blokuje EXE | Heuristika AV | Přidej výjimku build složky nebo signování. |
| Batch fail na jedné app | Specifická závislost app | Izoluj app a buildni samostatně. |
| Output přepsán | Nesprávná naming politika | Zapni safe overwrite + timestamp suffix. |
| Neúplná discovery tabulka | README pattern mismatch | Zkontroluj naming snapshotů. |
Recepty (provozní scénáře)
RECEPT 03 — Řešení missing module incidentu
- Přepni build na console + clean.
- Zachyť přesný ModuleNotFoundError.
- Doplň hidden import do profilu/.spec.
- Opakuj build a potvrď runtime stabilitu.
FAQ Extended (Q01–Q50)
- Q01: Můžu buildit více app najednou? Ano, přes multiselect a batch dispatch.
- Q02: Je lepší onefile nebo onedir? Pro diagnostiku a stabilitu začni onedir.
- Q03: Proč mám missing module až v EXE? Dynamický import nebyl zahrnut, přidej hidden-import.
- Q04: Kdy zapínat clean build? Při cache regresi nebo po větší změně závislostí.
- Q05: Co dělat při failu jedné app v dávce? Izolovat app a spustit debug build.
- Q06: Jak kontrolovat kvalitu release? QA matrix + smoke run na čistém stroji.
- Q07: Je compilehelper CI náhrada? Ne, je to lokální orchestrátor.
- Q08: Kam ukládat build logy? Do timestampované release složky.
- Q09: Co když discovery nenačte appku? Ověř naming README snapshotu.
- Q10: Jak zabránit přepsání outputu? Safe overwrite + timestamp suffix.
- Q11: Proč noconsole build padá bez logu? Nejprve buildni s console.
- Q12: Lze profilovat build časy? Ano, ukládej elapsed metadata.
- Q13: Co s AV false-positive? Přidej výjimku nebo code signing workflow.
- Q14: Musím testovat na čistém stroji? Ano, aspoň smoke validace.
- Q15: Kdy použít .spec? U komplexních app s custom packaging pravidly.
- Q16: Jak přibalit assets? Přes add-data nebo .spec datas sekci.
- Q17: Co s Qt pluginy? Zkontroluj přítomnost platforms/imageformats.
- Q18: Jak auditovat batch run? Build summary + incident list.
- Q19: Co je minimální release bundle? EXE + log + summary + notes.
- Q20: Lze mít profile per-app? Ano, doporučený režim.
- Q21: Jak poznat, že env je „čisté“? Žádné náhodné globální package interference.
- Q22: Co když output dir není dostupný? Build abort + jasná hláška.
- Q23: Jak řešit dlouhé build časy? Omez clean, zmenši dependency scope.
- Q24: Je možné build zastavit? Ano, ale loguj partial state dávky.
- Q25: Jak řešit neúplný artifact? Ověř pass/fail status a filesystem errors.
- Q26: Proč někdy funguje jen onedir? Onefile může mít jiný runtime behavior.
- Q27: Jak držet konzistenci mezi releasy? Lock profil + lock env + lock naming.
- Q28: Lze skipnout fail app a pokračovat? Ano, batch summary to musí zaznamenat.
- Q29: Co evidovat u incidentu? App, error, krok, mitigace, reprodukce.
- Q30: Jak ověřit output kvalitu? Smoke + quick functional sanity.
- Q31: Jaké klíče configu jsou kritické? output_dir, profile toggles, safety flags.
- Q32: Co když config parse fail? Fallback default + upozornění.
- Q33: Jak validovat entrypoint mapování? Existence souboru + spustitelnost.
- Q34: Jak řešit chyby jen v release režimu? Přepnout na console debug variantu.
- Q35: Má smysl onefile pro interní QA? Obvykle ne, raději onedir.
- Q36: Co když build obsahuje moc balíků? Revize import stromu a env hygieny.
- Q37: Jak trackovat regresi? Srovnávej elapsed + fail patterns mezi verzemi.
- Q38: Co dělat při náhodném failu? Re-run v čistém env + incident note.
- Q39: Lze použít compilehelper pro nightly? Ano, pokud máš externí scheduler.
- Q40: Jak předejít lidským chybám? Používej checklisty a předpřipravené profily.
- Q41: Kde evidovat release rozhodnutí? V release note šabloně.
- Q42: Jaké minimum testu po buildu? App start + základní UI workflow.
- Q43: Jak ošetřit rozpad pluginů po update Qt? Rebuild + plugin audit.
- Q44: Jak řešit změnu licence závislosti? Zapsat do release compliance poznámky.
- Q45: Mám archivovat i fail buildy? Ano, aspoň log + metadata.
- Q46: Co je „release ready“? P0 QA pass + artifact smoke + dokumentace.
- Q47: Jak řešit rollback? Vrátit předchozí artifact set + potvrdit smoke.
- Q48: Je možné mít více output rootů? Ano, dle profilu nebo týmu.
- Q49: Jak zabránit driftu profilů? Versionuj config šablony.
- Q50: Co je nejlepší další krok po dávce? Uzavřít summary, incidenty a archivaci.
