# 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-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.exe` (SHA-256 geprüft). - 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 ```