# 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) Der CI-Workflow unter [`.gitea/workflows/release.yaml`](.gitea/workflows/release.yaml) bildet den gesamten Release-Prozess für alle Zielplattformen vollautomatisch auf dem `ubuntu-latest`-Runner (`farmersdog-runner`) ab: ### Pipeline-Architektur: 1. **Trigger**: - Push eines Git-Release-Tags nach dem Schema `v*` (z. B. `v0.9.6`). 2. **Build & Test Job** (`build`): - **Plattform**: `ubuntu-latest`. - **Toolchains**: - Rust Toolchain gepinnt (`1.85.0`). - Rust Targets: `x86_64-pc-windows-gnu` und `x86_64-unknown-linux-musl`. - `cargo-zigbuild` gepinnt auf `0.23.4` mit zwingender SHA-256-Integritätsprüfung (`9e3cf73485edbd45905c8aadbc0fdf869c7ddc3848f0c898229f2680db52e44b`). - `Zig` Compiler gepinnt auf `0.16.0` mit zwingender SHA-256-Integritätsprüfung (`70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00`). - **Verifikation**: - Vollständige Ausführung der Testsuite (`cargo test --all --verbose`). - Kompilier-Verifikation aller Windows-spezifischen Tests (`cargo-zigbuild zigbuild --target x86_64-pc-windows-gnu --tests`). - **Kompilierung**: - Windows x86_64 Release-Build mit LTO und PE-Icon via `zig rc` (`cargo-zigbuild zigbuild --target x86_64-pc-windows-gnu --release`). - Statischer Linux musl Cross-Build (`cargo-zigbuild zigbuild --target x86_64-unknown-linux-musl --release`). - **Paketierung**: - Erstellung von `sanctum-v-windows-x86_64.zip` (inkl. `sanctum.exe`, Dokumentation und Assets). - Erstellung von `sanctum-v-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` Binary (`0.11`, SHA-256 geprüft: `f0a0954413df8531befed169e447a66da6868d79052ed7e892e50a4291af7ae0`). - Signiert `SHA256SUMS.txt` mit `trusted comment: version:`. - **Gitea Release**: - Veröffentlicht das Release unter `https://gitea.pansi.eu/harald/sanctum/releases/tag/v` mit allen 6 Assets: - `sanctum-v-windows-x86_64.zip` - `sanctum.exe` - `sanctum-v-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 ```