Files
sanctum/RELEASE_PROCESS.md
T

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:

  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<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 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:
        • 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 -ExecutionPolicy Bypass -File scripts/package-release.ps1
    
  2. Linux-Paket erstellen (Cross-Build):
    powershell -ExecutionPolicy Bypass -File scripts/package-release-linux.ps1
    
  3. Auf Gitea veröffentlichen:
    powershell -ExecutionPolicy Bypass -File scripts/publish-release.ps1