Files

5.4 KiB

Purpose

Liefert geprüfte Terminal-Basic-Programme und Exportvorlagen für die vier festgelegten Ziele über Gitea Actions und Releases am bestehenden Origin aus.

ADDED Requirements

Requirement: Vier verbindliche Buildziele

Gitea Actions am bestehenden Origin SHALL Terminalanwendungen für Windows amd64, macOS arm64, Linux amd64 und Linux arm64 aus derselben Revision auf dem vorhandenen Linux-arm64-Runner bauen und paketieren. Cross-Kompilierung SHALL für fremde Ziele verwendet werden; vier native Buildrunner MUST NOT vorausgesetzt werden. Buildprüfungen und echte Zielausführung SHALL getrennt nachvollziehbar sein. Fehlgeschlagene Builds oder fehlende Artefakte eines Pflichtziels MUST eine Veröffentlichung verhindern. Build, Paketierung und Veröffentlichung SHALL ausschließlich durch den Push eines neuen Release-Tags im exakten Format vX.Y.Z ausgelöst werden; X, Y und Z SHALL nichtnegative Dezimalzahlen ohne führende Nullen sein. Der Tag SHALL der Workspace-Version entsprechen. Normale Branch-Commits und Pull Requests MUST NOT Actions-Builds oder Paketartefakte auslösen. Lokale Entwicklungsprüfungen SHALL weiterhin verfügbar sein.

Scenario: Ein Ziel fehlt

  • WHEN drei Zieljobs erfolgreich sind und der vierte fehlt oder fehlschlägt
  • THEN wird kein vollständiger Release veröffentlicht und das fehlende Ziel bleibt erkennbar

Scenario: Normaler Commit oder Pull Request

  • WHEN ein Commit auf main oder ein Pull Request gepusht wird
  • THEN startet kein Actions-Build und es entstehen keine Paketartefakte

Scenario: Neuer passender Release-Tag

  • WHEN v1.0.0 auf eine Revision mit Workspace-Version 1.0.0 gepusht wird
  • THEN laufen nach der Versionsvorprüfung die vier Paketbuilds für diese Revision und der vollständige Upload wird direkt veröffentlicht

Scenario: Ungültiger oder unpassender Tag

  • WHEN ein Tag vom Format vX.Y.Z oder von der Workspace-Version abweicht
  • THEN beginnt kein Cargo-/Paketbuild; ein vom groben Tagfilter erfasster ungültiger Tag scheitert bereits in der Vorprüfung

Requirement: Nutzbare Releasearchive

Windows SHALL als .7z ausgeliefert werden; macOS und beide Linux-Architekturen SHALL jeweils als .tar.gz ausgeliefert werden. Jedes Archiv SHALL die passenden IDE-/Compiler-Executables tb/tbc und tbrt als native Runtime-/Exportvorlage (Windows jeweils mit .exe), benötigte Metadaten, Lizenz und Benutzungshinweise enthalten. Architektur, Version und Betriebssystem SHALL im Dateinamen eindeutig sein; Dateirechte und notwendige Begleitdateien SHALL erhalten bleiben.

Scenario: Aus Archiv starten

  • WHEN ein Zielarchiv in ein sauberes Verzeichnis entpackt wird
  • THEN starten IDE und Compiler als native Terminalanwendungen und ein Beispielprojekt kann mit den mitgelieferten Vorlagen exportiert und nativ verwendet werden

Requirement: Lokale Paketprüfung und vorherige Entwicklungstests

Der Release-Build SHALL Archivinhalt, Format, Zielarchitektur, Version, Revision und SHA-256 vor dem Upload lokal prüfen. Das Setzen des Release-Tags SHALL die Freigabeentscheidung des Benutzers nach dessen Entwicklungstests sein. Der Releasepfad MUST NOT eine erneute Pflichtabnahme, Ziel-/Terminalberichte, manuelle JSON-Nachweise oder einen zusätzlichen Nachweis-Commit verlangen. Vorhandene lokale Testwerkzeuge SHALL unabhängig vom Release verwendbar bleiben.

Scenario: Falsches Binary im richtigen Archiv

  • WHEN ein Windows-amd64-Archiv versehentlich ein Binary eines anderen Ziels enthält
  • THEN scheitert die Formatprüfung vor der Veröffentlichung

Scenario: Tag ohne zusätzliche Nachweise

  • WHEN ein gültiger Tag gesetzt wurde und alle vier Builds sowie der vollständige Upload erfolgreich sind, ohne dass zusätzliche Nachweisdateien vorliegen
  • THEN veröffentlicht derselbe Workflow den Release automatisch und verlangt keinen manuellen Publish-Schritt

Requirement: Nachvollziehbare Veröffentlichung

Releaseartefakte SHALL Version/Tag, Commit, Toolchain, Buildhost, Ziel, Integritätsprüfsumme nachvollziehbar machen. Nur der freigegebene Tag-/Releasepfad SHALL Veröffentlichungsrechte verwenden; Normale Commits und PRs SHALL keine Actions-Jobs starten. Der repositorygebundene Gitea-Jobtoken SHALL für Releasezugriffe nutzbar sein; ein getrenntes Secret SHALL optional bleiben. Vier Archive und vier zugehörige SHA-256-Dateien SHALL die Pflichtassets bilden. Ein Entwurf SHALL ausschließlich den laufenden Upload vor Teilveröffentlichung schützen und nach dessen erfolgreicher Kontrolle im selben Job automatisch freigegeben werden. Wiederholte fehlgeschlagene Veröffentlichungen SHALL keinen bestehenden vollständigen Release stillschweigend durch unvollständige Assets ersetzen.

Scenario: Paket beschädigt oder Upload unvollständig

  • WHEN ein Archiv nach dem Bau verändert wird oder ein Pflichtasset nicht hochgeladen werden kann
  • THEN verhindert die Integritäts-/Vollständigkeitsprüfung die Freigabe und nennt das betroffene Asset

Scenario: Uploadkontrolle ohne erneuten Download

  • WHEN der Releasejob die lokal auf Integrität geprüften Pakete hochgeladen hat
  • THEN prüft er über die Release-API die vollständige Pflichtasset-Liste und die Dateigrößen, ohne Asset-Inhalte erneut herunterzuladen
  • AND ergänzt ein wiederholter Release-Aufruf nur fehlende Dateien; vorhandene Assets werden nicht ersetzt und abweichende Größen führen zum Fehler