Bauen und Releases ohne lokale Abhaengigkeiten ueber ./build.sh
- build.sh (release, build, test) startet einen temporaeren Runner-Container (Python, Git, Docker-CLI), der die Build-Container ueber den Docker-Socket startet - release.py: Quellexport unter releases/ statt /tmp (Host-Pfade fuer Bind-Mounts), Test-Befehl in Docker, Git-Identitaet vorab pruefen, bei Commit-Fehler Versionen zuruecknehmen - Android-Build-Image enthaelt Platform-Tools fest Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ecefd347b2
commit
298c142c14
@@ -79,7 +79,8 @@ python -m netclip
|
||||
|
||||
### Pakete bauen
|
||||
|
||||
PyInstaller baut immer für das System, auf dem es läuft – also einmal je Betriebssystem:
|
||||
Windows, Linux und Android: `./build.sh build` (siehe [Bauen und Release erstellen](#bauen-und-release-erstellen)).
|
||||
Ohne Docker baut PyInstaller immer für das System, auf dem es läuft:
|
||||
|
||||
```bash
|
||||
cd client-desktop
|
||||
@@ -152,21 +153,27 @@ cd client-android
|
||||
Das Release-APK ist zum Testen mit dem Debug-Schlüssel signiert; für die Verteilung in `app/build.gradle`
|
||||
einen eigenen Keystore eintragen.
|
||||
|
||||
## Release erstellen
|
||||
## Bauen und Release erstellen
|
||||
|
||||
Die Version steht zentral in der Datei `VERSION`. Neue Änderungen kommen laufend in
|
||||
`CHANGELOG.md` unter `## [Unreleased]`. Ein Release:
|
||||
Auf dem Rechner wird **nur Docker** benötigt – Python, Git, JDK, Android-SDK, Wine usw. laufen in
|
||||
temporären Containern, die nach jedem Lauf wieder verschwinden (`docker run --rm`).
|
||||
|
||||
```bash
|
||||
python3 scripts/release.py # 1.0.0 -> 1.0.1 (patch), committen + taggen
|
||||
python3 scripts/release.py minor --build # 1.0.1 -> 1.1.0 und alle Pakete bauen
|
||||
python3 scripts/release.py --build-only # aktuellen Stand nur bauen
|
||||
./build.sh release # Version 1.0.1 -> 1.0.2 (patch), committen + taggen
|
||||
./build.sh release minor --build # -> 1.1.0 und alle Pakete bauen
|
||||
./build.sh build # aktuellen Stand (HEAD) bauen, ohne Versionswechsel
|
||||
./build.sh build --targets windows,android
|
||||
./build.sh test # Krypto-Kompatibilität Python <-> Kotlin prüfen
|
||||
git push --follow-tags
|
||||
```
|
||||
|
||||
Das Skript schreibt die neue Version in Server, Desktop-Client, Windows-Installer und Android-App
|
||||
Die Version steht zentral in der Datei `VERSION`. Neue Änderungen kommen laufend in
|
||||
`CHANGELOG.md` unter `## [Unreleased]`; ohne Einträge dort verweigert `release` den Release.
|
||||
Das Release schreibt die neue Version in Server, Desktop-Client, Windows-Installer und Android-App
|
||||
(`versionName`, `versionCode` +1) und macht aus `[Unreleased]` den neuen Versionsabschnitt.
|
||||
Mit `--build` wird ausschließlich in Docker gebaut (`docker-build/`), Ergebnis in `releases/v<version>/`:
|
||||
|
||||
Gebaut wird aus einem sauberen `git archive` (Release-Tag bzw. HEAD) – uncommittete Änderungen
|
||||
fließen nicht ein. Ergebnis in `releases/v<version>/`:
|
||||
|
||||
| Datei | Inhalt |
|
||||
|---|---|
|
||||
@@ -177,8 +184,11 @@ Mit `--build` wird ausschließlich in Docker gebaut (`docker-build/`), Ergebnis
|
||||
| `netclip-server-<v>.tar.gz` | Server-Image für `docker load -i …` (offline verteilbar) |
|
||||
| `RELEASE-NOTES.md`, `SHA256SUMS` | Änderungen und Prüfsummen |
|
||||
|
||||
Wie es funktioniert: `build.sh` startet einen Runner-Container (Python, Git, Docker-CLI), der über
|
||||
den Docker-Socket des Hosts die Build-Container aus `docker-build/` startet. Der erste Lauf lädt
|
||||
die Images (einige GB, vor allem Wine und Android-SDK), danach geht es aus dem Cache.
|
||||
|
||||
macOS kann nicht in Docker gebaut werden – dafür auf einem Mac in `client-desktop/` `python build.py`.
|
||||
Mit `--targets windows,android` lassen sich einzelne Pakete bauen.
|
||||
|
||||
**Android-Signatur:** Beim ersten Android-Build wird `secrets/netclip-release.jks` erzeugt (nicht im
|
||||
Git). Diesen Ordner sichern – ohne den Schlüssel lassen sich installierte Apps nicht mehr aktualisieren.
|
||||
@@ -186,10 +196,7 @@ Git). Diesen Ordner sichern – ohne den Schlüssel lassen sich installierte App
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
# Kompatibilität der Verschlüsselung Python <-> Kotlin
|
||||
python tools/interop.py gen /tmp/interop
|
||||
(cd client-android && ./gradlew testDebugUnitTest -Pinterop=/tmp/interop)
|
||||
python tools/interop.py check /tmp/interop
|
||||
./build.sh test # Kompatibilität der Verschlüsselung Python <-> Kotlin (in Docker)
|
||||
```
|
||||
|
||||
## Protokoll (für eigene Clients)
|
||||
|
||||
Reference in New Issue
Block a user