3.4 KiB
3.4 KiB
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 bildet den gesamten Release-Prozess für alle Zielplattformen vollautomatisch auf dem ubuntu-latest-Runner (farmersdog-runner) ab:
Pipeline-Architektur:
- Trigger:
- Push eines Git-Release-Tags nach dem Schema
v*(z. B.v0.9.6).
- Push eines Git-Release-Tags nach dem Schema
- Build & Test Job (
build):- Plattform:
ubuntu-latest. - Toolchains:
- Rust Toolchain gepinnt (
1.85.0). - Rust Targets:
x86_64-pc-windows-gnuundx86_64-unknown-linux-musl. cargo-zigbuildgepinnt auf0.23.4mit zwingender SHA-256-Integritätsprüfung (9e3cf73485edbd45905c8aadbc0fdf869c7ddc3848f0c898229f2680db52e44b).ZigCompiler gepinnt auf0.16.0mit zwingender SHA-256-Integritätsprüfung (70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00).
- Rust Toolchain gepinnt (
- 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).
- Vollständige Ausführung der Testsuite (
- 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).
- Windows x86_64 Release-Build mit LTO und PE-Icon via
- 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.sanctumund Dokumentation). - Bereitstellung der eigenständigen Binärdateien
sanctum.exeundsanctum. - Berechnung und Erstellung der vierzeiligen Prüfsummendatei
SHA256SUMS.txt.
- Erstellung von
- Plattform:
- Sign & Release Job (
sign-and-release):- Geheimnis-Isolation (SA-02): Das Signiergeheimnis
MINISIGN_SECRET_KEYist ausschließlich in diesem isolierten Job verfügbar, nicht in der Build- oder Testumgebung. - Signierung:
- Gepinntes
minisignBinary (0.11, SHA-256 geprüft:f0a0954413df8531befed169e447a66da6868d79052ed7e892e50a4291af7ae0). - Signiert
SHA256SUMS.txtmittrusted comment: version:<Version>.
- Gepinntes
- 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.zipsanctum.exesanctum-v<Version>-linux-x86_64.tar.gzsanctumSHA256SUMS.txtSHA256SUMS.txt.minisig
- Veröffentlicht das Release unter
- Geheimnis-Isolation (SA-02): Das Signiergeheimnis
2. Lokaler Fallback-Prozess (Manuell)
Sollte die CI-Infrastruktur nicht verfügbar sein, kann der Release-Prozess lokal über PowerShell repliziert werden:
- Windows-Paket erstellen:
powershell -ExecutionPolicy Bypass -File scripts/package-release.ps1 - Linux-Paket erstellen (Cross-Build):
powershell -ExecutionPolicy Bypass -File scripts/package-release-linux.ps1 - Auf Gitea veröffentlichen:
powershell -ExecutionPolicy Bypass -File scripts/publish-release.ps1