docs: CI-Desktop-Bau nur bei geaendertem Desktop-Stand — Betriebshandbuch, CI-Runbook, Entwicklungsanleitung, CHANGELOG
- anleitung-betrieb.md Kap. 10: neuer Unterabschnitt "Wann gebaut wird und wann Pakete uebernommen werden", Job-Dauer-Satz und Fehlerbilder-Tabelle ergaenzt - ci-cd-setup.md Abschnitt 4: Absatz zum Ueberspringen bei unveraendertem Desktop; Abschnitt 6: neuer Fehlerbehebungs-Eintrag - anleitung-entwicklung.md: Absatz zum CI-Ueberspringen bei "Desktop-App lokal bauen" - CHANGELOG.md: ein Stichpunkt unter Unveroeffentlicht/Geaendert Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+45
-1
@@ -138,6 +138,27 @@ Der Job `desktop` baut auf demselben `ubuntu-latest`-Runner nacheinander (ein
|
||||
Cache, ein Runner, siehe `18-CONTEXT.md` Specific Ideas) sowohl das
|
||||
Linux-AppImage als auch -- per Cross-Bau -- den Windows-Installer:
|
||||
|
||||
**Ueberspringen bei unveraendertem Desktop (quick-260917-jdh):** Direkt nach
|
||||
dem Checkout berechnet `desktop-stamp.sh stamp` den Stempel `<Version>-<SHA>`
|
||||
(Version aus `desktop-version.sh --print`; SHA = letzter Commit an
|
||||
`apps/desktop`, `desktop-version.sh`, `desktop-collect.sh`,
|
||||
`desktop-stamp.sh`, `ci.yml` -- Konstante `DESKTOP_PATHS`; `pnpm-lock.yaml`
|
||||
bewusst nicht, weil die Tauri-CLI-Version an `apps/desktop/package.json`
|
||||
haengt und der Bau keine Datei ausserhalb von `apps/desktop` liest) und gibt
|
||||
`skip_allowed=true` nur fuer `refs/heads/main` aus. Danach `actions/cache/restore@v4`
|
||||
mit dem Schluessel `desktop-dist-stamp-<Stempel>` -- ohne `restore-keys`, weil
|
||||
`act_runner` auch den Hauptschluessel per Praefix sucht und ein aelterer
|
||||
Stand nie als Treffer gelten darf. Anschliessend `desktop-stamp.sh check`:
|
||||
`cache-hit`, Manifest, Kanal `beta`, Version, beide Dateien mit Groesse und
|
||||
sha256 laut Manifest -> `reuse=true`; sonst raeumt es `desktop-dist/` auf und
|
||||
gibt `reuse=false`. Alle Bau-Schritte (setup-node bis Pakete einsammeln)
|
||||
tragen `if: steps.reuse.outputs.reuse != 'true'`. Nach einem echten Bau legt
|
||||
`actions/cache/save@v4` die Pakete zusaetzlich unter dem Stempel-Schluessel ab
|
||||
(nur auf `main`). Die Uebergabe an `publish` (`desktop-dist-<sha>`) laeuft in
|
||||
beiden Faellen; `publish` ist unveraendert. Bei Tags `v*` wird weder gesucht
|
||||
noch abgelegt. Lokale Probe: `DESKTOP_TAG=v1.2.0 GITHUB_REF=refs/heads/main
|
||||
sh .gitea/scripts/desktop-stamp.sh stamp`.
|
||||
|
||||
1. **Systemabhaengigkeiten** (`apt-get install`): WebKit/Tauri-Pakete
|
||||
(`libwebkit2gtk-4.1-dev` usw.) fuer den Linux-Bau, dazu `lld llvm clang
|
||||
nsis` fuer den Windows-Cross-Bau (der NSIS-Bundler ruft `makensis` aus
|
||||
@@ -166,7 +187,9 @@ Linux-AppImage als auch -- per Cross-Bau -- den Windows-Installer:
|
||||
7. **Uebergabe an `publish`** per `actions/cache/save@v4` mit dem Schluessel
|
||||
`desktop-dist-${{ gitea.sha }}` (ein neuer Schluessel je Commit, damit
|
||||
`publish` garantiert die Pakete des gerade gebauten Standes bekommt, nicht
|
||||
einen aelteren Cache-Treffer).
|
||||
einen aelteren Cache-Treffer). Dieser Schritt laeuft auch dann, wenn der Bau
|
||||
uebersprungen wurde -- er sichert in diesem Fall den aus dem Stempel-Cache
|
||||
restaurierten Stand unter dem neuen SHA.
|
||||
|
||||
**Warum `actions/cache` und nicht `upload-artifact`:** Auf dieser
|
||||
Gitea-Instanz ist `actions/upload-artifact`/`download-artifact` unzuverlaessig
|
||||
@@ -320,6 +343,27 @@ und einen Branch-Schutz fuer `live` anlegen (T-KU1-04).
|
||||
Speicherdruck `CARGO_BUILD_JOBS` (z. B. auf `4`) als Umgebungsvariable im
|
||||
Job setzen, um die parallele Uebersetzung zu drosseln.
|
||||
|
||||
### `desktop` baut, obwohl nichts geaendert wurde -- oder uebernimmt trotz Aenderung
|
||||
|
||||
**Baut trotzdem:**
|
||||
|
||||
1. Erster Lauf nach einer Aenderung unter den Desktop-Pfaden -- der Stempel
|
||||
ist neu, das ist erwartet.
|
||||
2. Ein neuer Freigabe-Tag ist gesetzt -- die Version im Stempel hat sich
|
||||
geaendert, die Beta-Pakete muessen einmal neu entstehen.
|
||||
3. Der Eintrag ist vom Runner-Cache weggeraeumt worden -- `act_runner` raeumt
|
||||
ungenutzte Eintraege nach einigen Tagen, aeltere nach etwa einem Monat weg.
|
||||
4. `ci.yml` oder eines der Desktop-Skripte wurde geaendert -- beides gehoert
|
||||
selbst zur Pfadliste `DESKTOP_PATHS`.
|
||||
5. `desktop-stamp.sh check` hat den gefundenen Eintrag verworfen -- der Grund
|
||||
steht im Log des Schritts "Gefundene Pakete pruefen".
|
||||
|
||||
**Uebernimmt trotz Aenderung:** Die Aenderung liegt ausserhalb der Pfadliste
|
||||
(zum Beispiel nur `pnpm-lock.yaml`). Entweder zusaetzlich etwas unter
|
||||
`apps/desktop/` aendern, oder `DESKTOP_PATHS` in `.gitea/scripts/desktop-stamp.sh`
|
||||
um den betroffenen Pfad erweitern -- diese Erweiterung loest selbst einen
|
||||
Neubau aus, weil `desktop-stamp.sh` Teil der eigenen Pfadliste ist.
|
||||
|
||||
### `publish`: cache miss
|
||||
|
||||
`actions/cache/restore@v4` mit `fail-on-cache-miss: true` bricht den Job
|
||||
|
||||
Reference in New Issue
Block a user