feat: Versionierung mit Changelog, Version 1.0.0
Bis jetzt stand nirgends, welcher Stand laeuft. Beim Aktualisieren auf einem Server ist das die erste Frage. CHANGELOG.md nach Keep a Changelog, Versionsnummern nach SemVer. Der Changelog sagt, was sich beim Arbeiten aendert - nicht, welche Datei angefasst wurde. Dazu eine Tabelle, was Major, Minor und Patch fuer den Betreiber praktisch bedeuten, und der Hinweis, dass sich eine Datenbank-Migration nicht zurueckrollen laesst. Die Version steht bewusst an zwei Stellen: package.json und src/lib/version.ts. Ein Import der package.json waere im Standalone-Build eine andere Datei als die des Projekts - die Zahl haenge dann an der Laufzeit. Ein Test haelt beide zusammen, und "npm run version" setzt sie gemeinsam samt Changelog-Abschnitt. Committet und getaggt wird nicht automatisch. Ein Changelog-Eintrag, den niemand gegengelesen hat, ist keinen Deut besser als keiner. Sichtbar wird die Version unten in der Seitenleiste und unter /api/gesundheit - dort mit Git-Stand, den der Docker-Build hineinreicht. Auf der Anmeldeseite steht sie nicht: wer nicht angemeldet ist, muss nicht wissen, welche Fassung hier laeuft. Etappe: 8 Phase: Haertung
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Versionsangaben der Anwendung.
|
||||
*
|
||||
* VERSION wird vom Skript `npm run version` zusammen mit der package.json
|
||||
* gesetzt - es gibt also genau eine Quelle, aus der beide gespeist werden.
|
||||
* Ein Test (tests/version.test.ts) prueft, dass sie nicht auseinanderlaufen.
|
||||
*
|
||||
* Warum nicht einfach die package.json importieren? Im Standalone-Build
|
||||
* liegt eine andere package.json neben dem Server als die des Projekts.
|
||||
* Die Zahl waere dann je nach Laufzeit eine andere - genau das, was man
|
||||
* bei einer Versionsangabe nicht gebrauchen kann.
|
||||
*
|
||||
* Die Angabe ist kein Geheimnis, aber auch keine oeffentliche Auskunft:
|
||||
* sie steht in den Einstellungen und im Gesundheitsendpunkt, nicht auf
|
||||
* der Anmeldeseite. Wer nicht angemeldet ist, muss nicht wissen, welche
|
||||
* Fassung hier laeuft.
|
||||
*/
|
||||
|
||||
/** Muss zur "version" in der package.json passen. */
|
||||
export const VERSION = '1.0.0'
|
||||
|
||||
/**
|
||||
* Kurzer Git-Stand, beim Bauen hineingereicht:
|
||||
*
|
||||
* docker build --build-arg GIT_COMMIT=$(git rev-parse --short HEAD) .
|
||||
*
|
||||
* Fehlt die Angabe (etwa im Entwicklungsmodus), bleibt sie leer. Dann
|
||||
* zeigt die Oberflaeche nur die Version.
|
||||
*/
|
||||
export const COMMIT = process.env.NEXT_PUBLIC_GIT_COMMIT ?? ''
|
||||
|
||||
/** Zeitpunkt des Bauens, ebenfalls beim Bauen hineingereicht. */
|
||||
export const GEBAUT_AM = process.env.NEXT_PUBLIC_BUILD_ZEIT ?? ''
|
||||
|
||||
/** "1.0.0" oder "1.0.0 · 4b953e7" - fuer die Anzeige. */
|
||||
export function versionstext(): string {
|
||||
return COMMIT ? `${VERSION} · ${COMMIT}` : VERSION
|
||||
}
|
||||
Reference in New Issue
Block a user