From c380a8ac639b2b8c959418d9560c049b05453bbf Mon Sep 17 00:00:00 2001 From: mhoennig Date: Tue, 21 Jul 2026 13:51:10 +0200 Subject: [PATCH] ci: Version aus VERSION-Datei + Commit-Anzahl statt Run-Nummer Micro-Version jetzt commit-basiert statt aus github.run_number: - Major.Minor in neuer Datei VERSION (per Bump-Commit gepflegt). - Micro = Commits seit dem letzten VERSION-Bump (git rev-list --count ..HEAD) -> beginnt nach einem Bump wieder bei 0 (SemVer-artig, z. B. 1.0.0, 1.0.1, dann 1.1.0). - checkout mit fetch-depth: 0 (flacher Klon zaehlte sonst nur 1 Commit). - sed ersetzt jetzt ">Werkbaum " (regex), damit auch nach einem Major/Minor-Bump im Quelltext getroffen wird; viewport-/xml-1.0 bleiben unberuehrt. Vorteil ggue. Run-Nummer: vollstaendig aus dem Repo reproduzierbar, zaehlt keine fehlgeschlagenen/manuellen Laeufe, kein Rueckschreiben. Doku: README (EN+DE) Deployment-Abschnitt und DECISIONS D16 aktualisiert. Keine SPEC-Aenderung (Notation unberuehrt). Co-Authored-By: Claude Opus 4.8 --- .github/workflows/pages.yml | 24 +++++++++++++++++------- README.de.md | 11 +++++++---- README.md | 11 +++++++---- VERSION | 1 + docs/DECISIONS.md | 18 +++++++++++------- 5 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 VERSION diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index de9d782..e3083cb 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -30,6 +30,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + # Volle Historie: die Micro-Version wird aus der Commit-Anzahl + # abgeleitet (Standard wäre ein flacher Klon mit nur einem Commit). + fetch-depth: 0 # Platzhalter für spätere Vitest-Läufe (Tests existieren noch nicht, # siehe docs/TASKS.md, Phase 1). Bei Aktivierung: Node einrichten und @@ -49,18 +53,24 @@ jobs: # den MIT-Link im Footer). Die Editor-Quelle bleibt unverändert — die # ../-Pfade werden nur auf der Kopie im Site-Ordner geradegezogen, weil # sie von der Wurzel-URL aus sonst über die Site hinauszeigen würden. - # Zusätzlich wird die Micro-Version aus der Run-Nummer gesetzt: aus - # „Werkbaum 1.0" im Footer wird „Werkbaum 1.0.". Die Nummer - # steigt bei jedem Workflow-Lauf monoton um 1, ganz ohne Commit zurück - # ins Repo (siehe README, Abschnitt „Deployment"). + # Zusätzlich wird die Versionsnummer im Footer gesetzt: Major.Minor aus + # der VERSION-Datei (per Bump-Commit gepflegt), die Micro-Stelle aus der + # Anzahl der Commits seit dem letzten VERSION-Bump — sie steigt also mit + # jedem Commit und beginnt nach einem Bump wieder bei 0. Aus „Werkbaum + # 1.0" im Footer-Quelltext wird so z. B. „Werkbaum 1.0.7" (siehe README, + # Abschnitt „Deployment"). Braucht die volle Historie (fetch-depth: 0). - name: Site zusammenstellen - env: - BUILD_VERSION: "1.0.${{ github.run_number }}" run: | + MAJORMINOR="$(tr -d '[:space:]' < VERSION)" + BASE="$(git log -1 --format=%H -- VERSION)" # letzter Bump-Commit + [ -z "$BASE" ] && BASE="$(git rev-list --max-parents=0 HEAD | tail -1)" + MICRO="$(git rev-list --count "${BASE}..HEAD")" # Commits seit dem Bump + BUILD_VERSION="${MAJORMINOR}.${MICRO}" + echo "Footer-Version: ${BUILD_VERSION}" mkdir -p site/docs/brand sed -e 's#\.\./docs/brand/#docs/brand/#g' \ -e 's#\.\./LICENSE#LICENSE#g' \ - -e "s#>Werkbaum 1.0#>Werkbaum ${BUILD_VERSION}#" \ + -e "s#>Werkbaum [0-9][0-9.]*#>Werkbaum ${BUILD_VERSION}#" \ frontend/index.html > site/index.html cp docs/brand/* site/docs/brand/ cp LICENSE site/LICENSE diff --git a/README.de.md b/README.de.md index 3653ead..22556bd 100644 --- a/README.de.md +++ b/README.de.md @@ -60,10 +60,13 @@ Der Workflow stellt einen Site-Ordner zusammen: `frontend/index.html` liegt als Quelldatei bleibt unverändert. `backend/` und die übrigen `docs/` werden nicht veröffentlicht. -Beim Zusammenstellen setzt der Workflow zudem die **Micro-Version** im Footer -aus der Run-Nummer: aus `Werkbaum 1.0` wird `Werkbaum 1.0.` und -steigt bei jedem Deployment um eins — ohne Commit zurück ins Repo. Lokal -geöffnet zeigt der Editor weiterhin `Werkbaum 1.0`. +Beim Zusammenstellen setzt der Workflow zudem die Versionsnummer im Footer: +**Major.Minor** stammt aus der Datei `VERSION` (per bewusstem „Bump-Commit" +gepflegt), die **Micro-Stelle** aus der Zahl der Commits seit diesem letzten +Bump — sie steigt also mit jedem Commit und beginnt nach einem Bump wieder bei +`0` (`Werkbaum 1.0.0`, `1.0.1`, … dann `VERSION` auf `1.1` bumpen → `1.1.0`). Es +wird nichts ins Repo zurückgeschrieben. Lokal geöffnet zeigt der Editor den +Platzhalter aus dem Quelltext (`Werkbaum 1.0`). **Einmalige Einrichtung:** In den Repo-Settings unter **Pages** als **Source** „GitHub Actions" wählen. Das Repo muss dafür **öffentlich** sein (GitHub Pages diff --git a/README.md b/README.md index 2a8ffa2..b890f16 100644 --- a/README.md +++ b/README.md @@ -62,10 +62,13 @@ The workflow assembles a site folder: `frontend/index.html` is placed as `../` paths in the editor source are straightened only on the copy — the source file stays unchanged. `backend/` and the remaining `docs/` are not published. -While assembling the site, the workflow also stamps the **micro version** into -the footer from the workflow run number: `Werkbaum 1.0` becomes -`Werkbaum 1.0.`, incrementing by one on every deployment — with no -commit back to the repo. Opened locally, the editor still shows `Werkbaum 1.0`. +While assembling the site, the workflow also stamps the version into the footer: +**major.minor** comes from the `VERSION` file (bumped by an explicit "bump +commit"), and the **micro** part is the number of commits since that last bump — +so it grows with every commit and resets to `0` right after a bump +(`Werkbaum 1.0.0`, `1.0.1`, … then bump `VERSION` to `1.1` → `1.1.0`). Nothing is +written back to the repo. Opened locally, the editor shows the source +placeholder (`Werkbaum 1.0`). **One-time setup:** In the repo settings under **Pages**, select **Source** = "GitHub Actions". The repo must be **public** for this (GitHub Pages via Actions diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0 diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index df573c2..3744f14 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -121,12 +121,16 @@ daneben. So bleibt die Quelle unverändert (lokal weiter per `file://` und Dev-Server nutzbar), und veröffentlicht wird nur das Nötige — `backend/` und die übrigen `docs/` bleiben außen vor. -**Versionsnummer:** Die Micro-Version im Footer wird beim Build aus der -GitHub-Actions-Run-Nummer gesetzt (`Werkbaum 1.0` → `Werkbaum 1.0.`, -per `sed` nur auf der Site-Kopie). Bewusst über die Run-Nummer statt über einen -zurückgeschriebenen Commit/Tag: monoton steigend, ohne Extra-Commit und ohne -selbstauslösenden Deploy-Zyklus. `1.0` bleibt die manuell gepflegte Basis -(Major/Minor) und damit auch die Version beim lokalen Öffnen; nur die -Micro-Stelle kommt aus der CI. +**Versionsnummer:** `Major.Minor` steht in der Datei `VERSION` und wird per +bewusstem **Bump-Commit** gepflegt; die **Micro-Stelle** leitet der Build aus +der Anzahl der Commits seit dem letzten VERSION-Bump ab +(`git rev-list --count ..HEAD`) und ersetzt sie per `sed` nur +auf der Site-Kopie im Footer. Bewusst aus der Commit-Historie statt aus der +Run-Nummer (Vorentscheidung, verworfen): vollständig aus dem Repo +reproduzierbar, monoton, ohne zurückgeschriebenen Commit/Tag und ohne +selbstauslösenden Deploy-Zyklus. Die Micro-Stelle beginnt nach jedem Bump wieder +bei 0 (SemVer-artig). Nötig ist ein vollständiger Klon (`fetch-depth: 0`), sonst +zählt der flache CI-Klon nur einen Commit. `1.0` bleibt die Version beim lokalen +Öffnen (Platzhalter im Quelltext). (Nummerierung: D15 war bereits für den kompakten Modus vergeben, daher D16.)