Release- und Upgrade-Richtlinie
Definition von erledigt
Jede Änderung, die sich auf das Verhalten auswirkt, muss die Anforderungs-/Antwortmodelle aktualisieren. Eingecheckter OpenAPI-Vertrag, Benutzer-/Betreiberdokumentation und Änderungsprotokoll im gleiche Pull-Anfrage. make check ist das obligatorische lokale und CI-Gate. Es läuft Backend-Suite, Frontend-Build/-Tests, PWA-Vertrag, OpenAPI-Drift-Check, geschützt öffentlicher HTTPS-Vertrag und beide isolierten Akzeptanzwege:
first Owner -> catalog/barcode -> synthetic receipt -> local stock
-> budget -> portable export -> operations overview
first login -> onboarding/update note -> invitation -> roles/account block
-> passkey -> TOTP -> recovery code -> password rotationDie Reise nutzt eine temporäre Datenbank und synthetische Daten. Es wird nie eine Verbindung hergestellt oder löscht einen bereitgestellten Haushalt.
Die vollständige Sequenz der ersten öffentlichen Veröffentlichung, einschließlich GitHub-Repository Einstellungen und GHCR-Sichtbarkeit werden im beibehalten Checkliste für den öffentlichen Start.
Containersicherung
– Laufzeit- und Build-Basis-Images werden durch Digest angeheftet.
- CI prüft vorher den kompletten Git-Verlauf mit der Digest-gepinnten Gitleaks-CLI Gebäude. Nur der exakte synthetische
YOUR_TOKEN-Dokumentationsplatzhalter ist vorhanden auf die Zulassungsliste gesetzt; Die Ergebnisse bleiben in den Protokollen vollständig geschwärzt. – CI erstellt die Produktions-Docker-Datei, schlägt bei behobenen „Hoch/Kritisch“-Ergebnissen fehl durch einen Digest-gepinnten offiziellen Grype-Container und erstellt einen CycloneDX JSON SBOM über einen offiziellen Syft-Container mit Digest-Pin. Dies vermeidet Laufzeit Installationsprogramm-Suchen, während der Scanner und die SBOM-Toolchain unveränderlich bleiben. Irgendein VEX Die Unterdrückung muss insecurity/vex.openvex.jsonerfolgen, einschließlich einer technischen Erreichbarkeitsbegründung und erneute Überprüfung auf Abhängigkeit oder Eingabe. Formatänderungen. – GitHub-Aktionen von Drittanbietern sind an Full-Commit-SHAs angeheftet. Dependabot schlägt vor Wöchentlich gruppierte npm-, Python-, Docker- und Actions-Neben-/Patch-Updates zur Überprüfung; Größere Upgrades bleiben bewusste Arbeit des Betreuers, daher gilt dies auch für Kompatibilitätsänderungen den Freigabeprozess nicht überfluten oder umgehen. - Ein
vMAJOR.MINOR.PATCH-Tag muss genau mitfrontend/package.jsonübereinstimmen. - Ein Tag veröffentlicht
linux/amd64- undlinux/arm64-Bilder mit OCI in GHCR Etiketten, BuildKit-Herkunft und SBOM-Bescheinigung, dann signiert es schlüssellos unveränderlicher Digest mit Cosign. Derselbe Workflow erstellt die GitHub-Version und hängt die CycloneDX-SBOM sowie eine Textdatei an, die das Unveränderliche enthält Bildauszug. – Der Tag-Workflow wiederholtmake checkund das feste Hoch/Kritisch-Bild-Gate vor dem Anmelden und Veröffentlichen, sodass sich ein Tag nicht nur auf einen vorherigen verlassen kann Zweiglauf.
Die private 0.8.23-Probe produzierte ein signiertes Multi-Architektur-Image, SBOM, Release-Assets und ein unabhängiger Neuinstallationsnachweis. Keiner davon ist öffentlich bis ein autorisierter Amturo-Betreuer die Repository- und Paketsichtbarkeit ändert separat nach Passieren des Starttors. Version 0.8.26 ist der nächste Kandidat und muss ein eigenes Tag, Bild, SBOM, Signatur und einen Neuinstallationsnachweis erhalten; die unveränderlichen 0.8.23 Vermögenswerte werden nicht ersetzt.
Private Veröffentlichungsprobe
Das erste Repository und das GHCR-Paket bleiben privat. CI läuft mit dem gleichen Der für das öffentliche Projekt verwendete Workflow wird von einem authentifizierten Betreuer abgerufen versioniertes Image auf einen zweiten Computer mit einem neuen Volume. Erst nach dem Quellprüfung, Neuinstallation, Upgrade-/Wiederherstellungsprüfungen und signiertes Image Bei der Überprüfung werden Repository- und Paketsichtbarkeit separat geändert öffentlich. Private Haushaltsdaten und die bereitgestellte Haushaltsdatenbank sind niemals vorhanden Teil dieser Probe.
Überprüfen Sie ein zukünftiges öffentliches Bild
Ersetzen Sie den Beispielbesitzer/das Repository und die Version durch die veröffentlichten Werte:
docker pull ghcr.io/amturo-gbr/vorrio:0.8.26
cosign verify \
--certificate-identity-regexp '^https://github.com/amturo-gbr/vorrio/.github/workflows/release.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/amturo-gbr/vorrio:0.8.26Heften Sie Produktionsbereitstellungen einer Version oder einem Digest zu. latest ist praktisch für Evaluierung, keine Upgrade-Richtlinie.
Kompatibilität und Upgrades
- Patch-Releases können Fehler und Sicherheitsprobleme beheben, ohne das zu ändern dokumentierter
/api/v1Vertrag inkompatibel. – Unterversionen können Felder und Endpunkte hinzufügen; Clients müssen unbekanntes JSON ignorieren Felder. – Breaking API oder persistente Datenänderungen erfordern eine Hauptversion und sind explizit Migrationshinweise. - Sichern Sie
/dataundAPP_SECRET_KEY, lesen SieCHANGELOG.mdund aktualisieren Sie eine Version Zu einem Zeitpunkt, an dem es aufgrund von Notizen erforderlich ist, überprüfen Sie dann den Zustand, die Bereitschaft, die Anmeldung und die Anzahl und die PWA. – Das Downgrade einer migrierten Datenbank wird nicht unterstützt. Stellen Sie das passende Backup wieder her.
