- R-NEW-1: Recalculate metadata HMAC upon recovery-key restore and mark backup restores as PendingRebuild to rebuild transparently on first mount - CI-01: Update release.yaml to compile both Windows x86_64 and Linux musl with pinned Zig 0.16.0 and cargo-zigbuild 0.23.4 - W-1: Implement statvfs quota determination on Unix via libc - Add RELEASE_PROCESS.md documenting release architecture and steps - Bump version to 0.9.2 across manifests, lockfile, docs, Scoop and WinGet
63 lines
3.0 KiB
Markdown
63 lines
3.0 KiB
Markdown
# Sanctum Release-Prozess & CI/CD Dokumentation
|
|
|
|
Dieses Dokument beschreibt den Release-Workflow von **Sanctum**, die Absicherung der Build-Pipeline (SA-02, SA-03, SA-04) und die unterstützten Veröffentlichungswege.
|
|
|
|
---
|
|
|
|
## 1. Automatisierter CI/CD-Workflow (Primärer Release-Pfad)
|
|
|
|
Ab Version **0.9.2** bildet der CI-Workflow unter [`.gitea/workflows/release.yaml`](.gitea/workflows/release.yaml) den gesamten Release-Prozess für alle Zielplattformen vollautomatisch auf dem `windows-latest`-Runner ab:
|
|
|
|
### Pipeline-Architektur:
|
|
1. **Trigger**:
|
|
- Push eines Git-Release-Tags nach dem Schema `v*` (z. B. `v0.9.2`).
|
|
2. **Build & Test Job** (`build`):
|
|
- **Plattform**: `windows-latest`.
|
|
- **Toolchains**:
|
|
- Rust Toolchain gepinnt (`1.85.0`).
|
|
- Rust Targets: `x86_64-pc-windows-msvc` und `x86_64-unknown-linux-musl`.
|
|
- `cargo-zigbuild` gepinnt auf `0.23.4`.
|
|
- `Zig` Compiler gepinnt auf `0.16.0` mit zwingender SHA-256-Integritätsprüfung (`68659eb5f1e4eb1437a722f1dd889c5a322c9954607f5edcf337bc3684a75a7e`).
|
|
- **Verifikation**:
|
|
- Vollständige Ausführung der Testsuite (`cargo test --all --verbose`).
|
|
- **Kompilierung**:
|
|
- Nativer Windows x86_64 Release-Build mit LTO (`cargo build --release`).
|
|
- Statischer Linux musl Cross-Build (`cargo-zigbuild zigbuild --target x86_64-unknown-linux-musl --release`).
|
|
- **Paketierung**:
|
|
- Erstellung von `sanctum-v<Version>-windows-x86_64.zip` (inkl. `sanctum.exe`, Dokumentation und Assets).
|
|
- Erstellung von `sanctum-v<Version>-linux-x86_64.tar.gz` (inkl. `sanctum` und Dokumentation).
|
|
- Bereitstellung der eigenständigen Binärdateien `sanctum.exe` und `sanctum`.
|
|
- Berechnung und Erstellung der vierzeiligen Prüfsummendatei `SHA256SUMS.txt`.
|
|
3. **Sign & Release Job** (`sign-and-release`):
|
|
- **Geheimnis-Isolation (SA-02)**: Das Signiergeheimnis `MINISIGN_SECRET_KEY` ist ausschließlich in diesem isolierten Job verfügbar, nicht in der Build- oder Testumgebung.
|
|
- **Signierung**:
|
|
- Gepinntes `minisign.exe` (SHA-256 geprüft).
|
|
- Signiert `SHA256SUMS.txt` mit `trusted comment: version:<Version>`.
|
|
- **Gitea Release**:
|
|
- Veröffentlicht das Release unter `https://gitea.pansi.eu/harald/sanctum/releases/tag/v<Version>` mit allen 6 Assets:
|
|
- `sanctum-v<Version>-windows-x86_64.zip`
|
|
- `sanctum.exe`
|
|
- `sanctum-v<Version>-linux-x86_64.tar.gz`
|
|
- `sanctum`
|
|
- `SHA256SUMS.txt`
|
|
- `SHA256SUMS.txt.minisig`
|
|
|
|
---
|
|
|
|
## 2. Lokaler Fallback-Prozess (Manuell)
|
|
|
|
Sollte die CI-Infrastruktur nicht verfügbar sein, kann der Release-Prozess lokal über PowerShell repliziert werden:
|
|
|
|
1. **Windows-Paket erstellen**:
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File scripts/package-release.ps1
|
|
```
|
|
2. **Linux-Paket erstellen (Cross-Build)**:
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File scripts/package-release-linux.ps1
|
|
```
|
|
3. **Auf Gitea veröffentlichen**:
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File scripts/publish-release.ps1
|
|
```
|