ci(release): migrate release workflow to ubuntu-latest with cargo-zigbuild cross-compilation

This commit is contained in:
harald committed 2026-10-22 10:08:37 +02:00
1 parent d93b03322e
commit a84b2ccf9f
3 files changed
+159 -114

No files matched your search

+9 -8
View File
@@ -6,22 +6,23 @@ Dieses Dokument beschreibt den Release-Workflow von **Sanctum**, die Absicherung
## 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:
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.2`).
- Push eines Git-Release-Tags nach dem Schema `v*` (z. B. `v0.9.6`).
2. **Build & Test Job** (`build`):
- **Plattform**: `windows-latest`.
- **Plattform**: `ubuntu-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`).
- 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**:
- Nativer Windows x86_64 Release-Build mit LTO (`cargo build --release`).
- 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<Version>-windows-x86_64.zip` (inkl. `sanctum.exe`, Dokumentation und Assets).
@@ -31,7 +32,7 @@ Ab Version **0.9.2** bildet der CI-Workflow unter [`.gitea/workflows/release.yam
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).
- Gepinntes `minisign` Binary (`0.11`, SHA-256 geprüft: `f0a0954413df8531befed169e447a66da6868d79052ed7e892e50a4291af7ae0`).
- 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: