RELEASING.md 3.7 KB

Releases veröffentlichen

Überblick

Ein Release ist ein ZIP, dessen Wurzel der Anwendungsstamm des Projekts ist. Der Client rollt es über die bestehende Installation aus.

Ablauf: bauen → hochladen → als aktuell setzen → Instanzen holen es ab.

1. Paket bauen

client-package/scripts/create-release-zip.sh ist die Vorlage. Sie wird mit dem Client-Paket ausgeliefert, einmal pro Projekt angepasst (Produktname, Versionsdatei, Ausschlussliste), ins Projekt kopiert und dort aufgerufen:

./scripts/create-release-zip.sh v1.3.0

Das Skript

  1. schreibt die Version in die Versionsdatei,
  2. prüft nach, dass das Schreiben tatsächlich funktioniert hat,
  3. packt alle von Git verfolgten Dateien abzüglich der Ausschlussliste,
  4. gibt Dateizahl, Größe und SHA-256 aus.

Es warnt, wenn die Arbeitskopie ungesicherte Änderungen enthält: Weil die Dateiliste aus git ls-files stammt, landen nicht eingecheckte Änderungen sonst still nicht im Paket.

Ausführlich – Aufbau des Pakets, Ausschlüsse, häufige Fehler: ../client-package/docs/06_UPDATE_PACKAGING.md.

2. Hochladen

Releases öffnen, Version im Format vX.Y.Z eintragen, ZIP auswählen, hochladen.

Der Server

  • prüft die Endung und die ZIP-Signatur der Datei,
  • speichert sie als <MANAGE_PACKAGE_PREFIX>-<version>.zip,
  • berechnet SHA-256 und Größe selbst und trägt sie ins Manifest ein,
  • setzt das Release als aktuell.

Die angezeigte Prüfsumme sollte mit der des Build-Skripts übereinstimmen. Tut sie das nicht, wurde eine andere Datei hochgeladen.

Schlägt der Upload ohne erkennbaren Grund fehl, ist meist das PHP-Upload-Limit kleiner als das Paket. Die geltenden Werte stehen auf der Releases-Seite und unter Einstellungen → Diagnose.

3. Aktuelles Release wählen

Ein Upload setzt das neue Release automatisch als aktuell. Über Als aktuell setzen kann jederzeit ein anderes gewählt werden – das ist auch der Weg, um nach einem missglückten Release wieder auf die vorherige Fassung zu zeigen.

Wichtig: Das ändert nur, was Instanzen künftig herunterladen. Bereits ausgerollte Instanzen bleiben, wo sie sind – der Client kennt keine Rücknahme. Eine Instanz auf die ältere Fassung zurückzubringen heißt, sie mit update --force erneut ausrollen zu lassen; Datenänderungen aus Migrationen macht das nicht rückgängig.

4. Ausrollen

Auf der Instanz:

php manage-client/bin/manage-client.php check     # Exit 2 = Update verfügbar
php manage-client/bin/manage-client.php backup    # vorher sichern
php manage-client/bin/manage-client.php update

Oder über die Oberfläche im Adminbereich des Projekts.

Updates laufen nicht automatisch. Sie überschreiben Dateien im laufenden Betrieb und können Migrationen auslösen; das gehört unter Aufsicht.

Release löschen

Löschen entfernt den Manifest-Eintrag und die ZIP-Datei. War es das aktuelle Release, hat der Server danach keines – Instanzen melden dann Es ist kein gültiges Release veröffentlicht. Vorher ein anderes als aktuell setzen.

Versionsnummern

Format vX.Y.Z, sonst nichts. Client und Server lehnen alles andere ab. Eine bereits veröffentlichte Version erneut hochzuladen überschreibt das Paket – bei einem fehlerhaften Release ist eine neue Patch-Version die sauberere Wahl, weil Instanzen sonst je nach Zeitpunkt Unterschiedliches installiert haben.

Weiter