Versionsnummer aus dem Git-Tag ableiten statt sie einzuchecken #7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
VERSIONundfrontend/package.jsonenthalten die Versionsnummer als eingecheckten Dateiinhalt. Beim Release werden diese Dateien aufbetaund aufmainunabhängig voneinander verändert. Git sieht dadurch bei jedem Mergebeta -> mainzwei divergierende Fassungen derselben Dateien und meldet einen Konflikt.Das aktuelle
publish.shumgeht das mit einer Sonderbehandlung (merge_auto_resolving_version_files()) und einem automatischen Rück-Mergemain -> beta. Das behandelt nur das Symptom und macht das Release-Skript deutlich komplizierter, als es sein müsste.Ziel
Der Git-Tag ist die einzige Quelle der Wahrheit für die Versionsnummer. Die Version wird beim Build erzeugt und nicht mehr versioniert. Dadurch hat
mainkeine eigenen Inhaltsänderungen mehr, jeder Mergebeta -> mainist konfliktfrei, und das Release-Skript wird deutlich schlanker.Aufgaben
VERSIONaus der Git-Verwaltung nehmen und in.gitignoreaufnehmen (git rm --cached VERSION)versioninfrontend/package.jsondauerhaft auf0.0.0setzen (Feld wird von npm verlangt, Inhalt ist ab dann bedeutungslos)frontend/vite.config.tseindefinefür__APP_VERSION__ergänzen, gespeist ausprocess.env.APP_VERSION, mit Fallback"dev"declare const __APP_VERSION__: string;infrontend/src/vite-env.d.tsergänzen__APP_VERSION__ersetzenVERSION-Datei mit Fallback"0.0.0-dev"anlegen und an allen Stellen verwenden, die bisher eine Version ausgeben (u. a. der Health-/Info-Endpunkt)publish.shauf die neue Logik umstellen:merge_auto_resolving_version_files(), den Rück-Merge-Block undswitch_default_branch()entfernen; Version nur noch generieren, nicht committenFORGEJO_TOKEN) ersetzenAkzeptanzkriterien
git statuszeigt nach einem Build keine geänderteVERSIONmehr an0.0.0-devbeta -> mainerzeugt keinen Konflikt mehrscripts/publish.sh beta X.Y.Zbeide dieselbe Versionsnummer anmerge_auto_resolving_version_files()existiert nicht mehr im SkriptHinweise
APP_VERSION=$(git describe --tags --abbrev=0) npm run build. Das übernimmtpublish.shautomatisch.VERSION-Datei nicht, und dort darf nichts abstürzen.beta -> mainlaufen können, statt direkt nachmainzu pushen.V1.1.2