Release-Workflow: ZIP bei jedem Merge nach main #5

Merged
friloo merged 1 commit from ci/release-zip into main 2026-09-23 14:50:36 +00:00
Owner

Legt bei jedem Push auf main – also nach jedem gemergten Pull Request – ein installierbares Paket an und hängt es an das rollende Vorab-Release latest-main. Der Download-Link bleibt dadurch stabil und zeigt immer auf den aktuellen Stand. Ein Tag v* erzeugt mit derselben Mechanik ein reguläres Release.

Wie das Paket entsteht

git archive erzeugt das ZIP direkt aus dem Commit – kein zusätzliches Werkzeug im Runner nötig. Was hineingehört, steuert die neue .gitattributes über export-ignore: docs/, tests/, tools/, phpunit.xml.dist, phpstan.neon und die CI-Dateien bleiben draußen.

Ergebnis: 165 Dateien, rund 1,4 MB – inklusive der lokalen Assets, database.sql, .htaccess-Dateien und der leeren uploads/-Struktur.

Weitere Schritte im Workflow:

  • Inhaltsprüfung: schlägt fehl, wenn Kerndateien (index.php, install.php, database.sql, assets/global.css, assets/vendor/inter/inter.css, includes/Ui.php) fehlen
  • .sha256-Datei neben dem ZIP
  • Build-Artefakt zusätzlich abgelegt, mit continue-on-error – falls der Artefakt-Speicher fehlt, läuft das Release trotzdem durch
  • Release-API über den automatisch bereitgestellten Token, FORGEJO_TOKEN als Ausweichweg; ohne Token wird der Schritt übersprungen statt fehlzuschlagen
  • beim rollenden Release werden altes Release und Tag entfernt, bevor sie neu angelegt werden – sonst zeigte der Tag weiter auf den alten Commit

Versionsnummer

Neu ist die Datei VERSION im Projektstamm als einzige Quelle. Sie benennt das Paket (unifi-voucher-tool-2.6.0+2026-09-23.bee4b11.zip) und erscheint über Ui::version() unten in der Admin-Seitenleiste: „v2.6.0 · Entwickelt von Loheide.eu".

Geprüft

Paket lokal gebaut, entpackt und die Anwendung aus dem ZIP heraus gestartet – alle Seiten antworten mit 200, keine fehlende Datei. Zusätzlich PHPUnit 29/29 und PHPStan ohne Befund, Screenshots neu erzeugt.

Voraussetzung für den Lauf ist ein registrierter Forgejo-Actions-Runner. Ohne Runner bleibt der Workflow – wie die bestehende CI – in der Warteschlange stehen.

🤖 Generated with Claude Code

Legt bei jedem Push auf `main` – also nach jedem gemergten Pull Request – ein installierbares Paket an und hängt es an das rollende Vorab-Release **`latest-main`**. Der Download-Link bleibt dadurch stabil und zeigt immer auf den aktuellen Stand. Ein Tag `v*` erzeugt mit derselben Mechanik ein reguläres Release. ## Wie das Paket entsteht `git archive` erzeugt das ZIP direkt aus dem Commit – kein zusätzliches Werkzeug im Runner nötig. Was hineingehört, steuert die neue `.gitattributes` über `export-ignore`: `docs/`, `tests/`, `tools/`, `phpunit.xml.dist`, `phpstan.neon` und die CI-Dateien bleiben draußen. Ergebnis: **165 Dateien, rund 1,4 MB** – inklusive der lokalen Assets, `database.sql`, `.htaccess`-Dateien und der leeren `uploads/`-Struktur. Weitere Schritte im Workflow: - **Inhaltsprüfung:** schlägt fehl, wenn Kerndateien (`index.php`, `install.php`, `database.sql`, `assets/global.css`, `assets/vendor/inter/inter.css`, `includes/Ui.php`) fehlen - **`.sha256`-Datei** neben dem ZIP - **Build-Artefakt** zusätzlich abgelegt, mit `continue-on-error` – falls der Artefakt-Speicher fehlt, läuft das Release trotzdem durch - **Release-API** über den automatisch bereitgestellten Token, `FORGEJO_TOKEN` als Ausweichweg; ohne Token wird der Schritt übersprungen statt fehlzuschlagen - beim rollenden Release werden altes Release **und** Tag entfernt, bevor sie neu angelegt werden – sonst zeigte der Tag weiter auf den alten Commit ## Versionsnummer Neu ist die Datei **`VERSION`** im Projektstamm als einzige Quelle. Sie benennt das Paket (`unifi-voucher-tool-2.6.0+2026-09-23.bee4b11.zip`) und erscheint über `Ui::version()` unten in der Admin-Seitenleiste: „v2.6.0 · Entwickelt von Loheide.eu". ## Geprüft Paket lokal gebaut, entpackt und die Anwendung **aus dem ZIP heraus** gestartet – alle Seiten antworten mit 200, keine fehlende Datei. Zusätzlich PHPUnit 29/29 und PHPStan ohne Befund, Screenshots neu erzeugt. > Voraussetzung für den Lauf ist ein registrierter Forgejo-Actions-Runner. Ohne Runner bleibt der Workflow – wie die bestehende CI – in der Warteschlange stehen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
friloo added 1 commit 2026-09-23 14:50:30 +00:00
Release-Workflow: ZIP bei jedem Merge nach main
Some checks are pending
CI / PHP Lint (pull_request) Waiting to run
CI / PHP Lint-1 (pull_request) Waiting to run
CI / Unit Tests & Static Analysis (pull_request) Waiting to run
CI / PHP Lint (push) Waiting to run
CI / PHP Lint-1 (push) Waiting to run
CI / Unit Tests & Static Analysis (push) Waiting to run
8facc71455
.github/workflows/release.yml baut bei jedem Push auf main (also auch
nach jedem gemergten Pull Request) ein installierbares Paket und hängt es
an das rollende Vorab-Release "latest-main". Der Download-Link bleibt
damit stabil und zeigt immer auf den aktuellen Stand. Ein Tag v* erzeugt
mit derselben Mechanik ein reguläres Release.

Details:
- das ZIP entsteht per `git archive`, die Auswahl steuert .gitattributes
  (export-ignore) – docs/, tests/, tools/ und CI bleiben draußen, das
  Paket ist rund 1,4 MB groß
- eine Prüfschritt kontrolliert, dass Kerndateien wirklich enthalten sind,
  dazu gibt es eine .sha256-Datei
- zusätzlich als Build-Artefakt abgelegt (optional, bricht nicht ab, wenn
  der Artefakt-Speicher fehlt)
- Release-API wird über den automatisch bereitgestellten Token
  angesprochen, FORGEJO_TOKEN dient als Ausweichweg; ohne Token wird der
  Schritt übersprungen statt fehlzuschlagen

Neu ist die Datei VERSION als einzige Quelle der Versionsnummer: sie
benennt das Paket und erscheint über Ui::version() unten in der
Admin-Seitenleiste ("v2.6.0 · Entwickelt von Loheide.eu").

Geprüft: Paket lokal gebaut, entpackt und die Anwendung daraus gestartet –
alle Seiten antworten mit 200, keine fehlenden Dateien.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
friloo merged commit ad197ecf90 into main 2026-09-23 14:50:36 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: friloo/Unifi-Voucher-Tool#5
No description provided.