Files
sanctum/RELEASE_PROCESS.md
T
harald badbe3bd18
Sanctum Release / Build & Test (Windows x86_64 & Linux musl) (push) Waiting to run
Sanctum Release / Sign & Release (push) Blocked by required conditions
fix(recovery): resolve metadata MAC desync after recovery (R-NEW-1) & complete release workflow (CI-01)
- R-NEW-1: Recalculate metadata HMAC upon recovery-key restore and mark backup restores as PendingRebuild to rebuild transparently on first mount
- CI-01: Update release.yaml to compile both Windows x86_64 and Linux musl with pinned Zig 0.16.0 and cargo-zigbuild 0.23.4
- W-1: Implement statvfs quota determination on Unix via libc
- Add RELEASE_PROCESS.md documenting release architecture and steps
- Bump version to 0.9.2 across manifests, lockfile, docs, Scoop and WinGet
2026-09-21 08:15:17 +02:00

3.0 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)

Ab Version 0.9.2 bildet der CI-Workflow unter .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<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.exe (SHA-256 geprüft).
      • 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