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 <VERSION-Commit>..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 <ziffern></a>" (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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
aa16665853
commit
c380a8ac63
@@ -30,6 +30,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
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,
|
# Platzhalter für spätere Vitest-Läufe (Tests existieren noch nicht,
|
||||||
# siehe docs/TASKS.md, Phase 1). Bei Aktivierung: Node einrichten und
|
# 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
|
# den MIT-Link im Footer). Die Editor-Quelle bleibt unverändert — die
|
||||||
# ../-Pfade werden nur auf der Kopie im Site-Ordner geradegezogen, weil
|
# ../-Pfade werden nur auf der Kopie im Site-Ordner geradegezogen, weil
|
||||||
# sie von der Wurzel-URL aus sonst über die Site hinauszeigen würden.
|
# 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
|
# Zusätzlich wird die Versionsnummer im Footer gesetzt: Major.Minor aus
|
||||||
# „Werkbaum 1.0" im Footer wird „Werkbaum 1.0.<run_number>". Die Nummer
|
# der VERSION-Datei (per Bump-Commit gepflegt), die Micro-Stelle aus der
|
||||||
# steigt bei jedem Workflow-Lauf monoton um 1, ganz ohne Commit zurück
|
# Anzahl der Commits seit dem letzten VERSION-Bump — sie steigt also mit
|
||||||
# ins Repo (siehe README, Abschnitt „Deployment").
|
# 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
|
- name: Site zusammenstellen
|
||||||
env:
|
|
||||||
BUILD_VERSION: "1.0.${{ github.run_number }}"
|
|
||||||
run: |
|
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
|
mkdir -p site/docs/brand
|
||||||
sed -e 's#\.\./docs/brand/#docs/brand/#g' \
|
sed -e 's#\.\./docs/brand/#docs/brand/#g' \
|
||||||
-e 's#\.\./LICENSE#LICENSE#g' \
|
-e 's#\.\./LICENSE#LICENSE#g' \
|
||||||
-e "s#>Werkbaum 1.0</a>#>Werkbaum ${BUILD_VERSION}</a>#" \
|
-e "s#>Werkbaum [0-9][0-9.]*</a>#>Werkbaum ${BUILD_VERSION}</a>#" \
|
||||||
frontend/index.html > site/index.html
|
frontend/index.html > site/index.html
|
||||||
cp docs/brand/* site/docs/brand/
|
cp docs/brand/* site/docs/brand/
|
||||||
cp LICENSE site/LICENSE
|
cp LICENSE site/LICENSE
|
||||||
|
|||||||
+7
-4
@@ -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
|
Quelldatei bleibt unverändert. `backend/` und die übrigen `docs/` werden nicht
|
||||||
veröffentlicht.
|
veröffentlicht.
|
||||||
|
|
||||||
Beim Zusammenstellen setzt der Workflow zudem die **Micro-Version** im Footer
|
Beim Zusammenstellen setzt der Workflow zudem die Versionsnummer im Footer:
|
||||||
aus der Run-Nummer: aus `Werkbaum 1.0` wird `Werkbaum 1.0.<Run-Nummer>` und
|
**Major.Minor** stammt aus der Datei `VERSION` (per bewusstem „Bump-Commit"
|
||||||
steigt bei jedem Deployment um eins — ohne Commit zurück ins Repo. Lokal
|
gepflegt), die **Micro-Stelle** aus der Zahl der Commits seit diesem letzten
|
||||||
geöffnet zeigt der Editor weiterhin `Werkbaum 1.0`.
|
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**
|
**Einmalige Einrichtung:** In den Repo-Settings unter **Pages** als **Source**
|
||||||
„GitHub Actions" wählen. Das Repo muss dafür **öffentlich** sein (GitHub Pages
|
„GitHub Actions" wählen. Das Repo muss dafür **öffentlich** sein (GitHub Pages
|
||||||
|
|||||||
@@ -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
|
`../` paths in the editor source are straightened only on the copy — the source
|
||||||
file stays unchanged. `backend/` and the remaining `docs/` are not published.
|
file stays unchanged. `backend/` and the remaining `docs/` are not published.
|
||||||
|
|
||||||
While assembling the site, the workflow also stamps the **micro version** into
|
While assembling the site, the workflow also stamps the version into the footer:
|
||||||
the footer from the workflow run number: `Werkbaum 1.0` becomes
|
**major.minor** comes from the `VERSION` file (bumped by an explicit "bump
|
||||||
`Werkbaum 1.0.<run-number>`, incrementing by one on every deployment — with no
|
commit"), and the **micro** part is the number of commits since that last bump —
|
||||||
commit back to the repo. Opened locally, the editor still shows `Werkbaum 1.0`.
|
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** =
|
**One-time setup:** In the repo settings under **Pages**, select **Source** =
|
||||||
"GitHub Actions". The repo must be **public** for this (GitHub Pages via Actions
|
"GitHub Actions". The repo must be **public** for this (GitHub Pages via Actions
|
||||||
|
|||||||
+11
-7
@@ -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
|
Dev-Server nutzbar), und veröffentlicht wird nur das Nötige — `backend/` und die
|
||||||
übrigen `docs/` bleiben außen vor.
|
übrigen `docs/` bleiben außen vor.
|
||||||
|
|
||||||
**Versionsnummer:** Die Micro-Version im Footer wird beim Build aus der
|
**Versionsnummer:** `Major.Minor` steht in der Datei `VERSION` und wird per
|
||||||
GitHub-Actions-Run-Nummer gesetzt (`Werkbaum 1.0` → `Werkbaum 1.0.<run_number>`,
|
bewusstem **Bump-Commit** gepflegt; die **Micro-Stelle** leitet der Build aus
|
||||||
per `sed` nur auf der Site-Kopie). Bewusst über die Run-Nummer statt über einen
|
der Anzahl der Commits seit dem letzten VERSION-Bump ab
|
||||||
zurückgeschriebenen Commit/Tag: monoton steigend, ohne Extra-Commit und ohne
|
(`git rev-list --count <VERSION-Commit>..HEAD`) und ersetzt sie per `sed` nur
|
||||||
selbstauslösenden Deploy-Zyklus. `1.0` bleibt die manuell gepflegte Basis
|
auf der Site-Kopie im Footer. Bewusst aus der Commit-Historie statt aus der
|
||||||
(Major/Minor) und damit auch die Version beim lokalen Öffnen; nur die
|
Run-Nummer (Vorentscheidung, verworfen): vollständig aus dem Repo
|
||||||
Micro-Stelle kommt aus der CI.
|
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.)
|
(Nummerierung: D15 war bereits für den kompakten Modus vergeben, daher D16.)
|
||||||
|
|||||||
Reference in New Issue
Block a user