GitHub Actions - Eine Aktion zum Bauen und Testen von Zikula-Modulen

in  Builds & Tests , , , , ,

GitHub Actions - Eine Aktion zum Bauen und Testen von Zikula-Modulen

Vor ein paar Wochen haben wir unsere generator-action vorgestellt, welche die einfache Generierung von Zikula-Erweiterungen mit dem Standalone Generator von ModuleStudio erlaubt. Diese Action wird als Docker Image bereitgestellt und kann auch losgelöst von GitHub Actions verwendet werden.

Die zikula-action

Analog dazu steht auch eine weitere GitHub Action zur Verfügung: die zikula-action. Dieses Docker Image basiert auf der ebenfalls bereits vorgestellten phpqa-Toolbox und hat somit Zugriff auf zahlreiche Tools rund um Analyse, Tests und Qualitätssicherung.

ModuleStudio 1.4.0 wurde soeben veröffentlicht

in  Generator , , , ,

ModuleStudio 1.4.0 wurde soeben veröffentlicht

Eine neue Version von ModuleStudio steht zum Download auf der Projektseite bereit. ModuleStudio 1.4.0 bringt komplette Unterstützung von Anwendungen für das gestern veröffentlichte Zikula 3 und dem damit einhergehenden modernisierten Stack: Symfony 5, Twig 3, Doctrine 2, Bootstrap 4 und Font Awesome 5.

Einen kurzen Überblick über die wichtigsten Neuerungen gibt die Release-Ankündigung.

GitHub Actions - Eine Aktion zum Generieren von Zikula-Modulen

in  Builds & Tests , , , , ,

GitHub Actions - Eine Aktion zum Generieren von Zikula-Modulen

Der Standalone-Generator

ModuleStudio bietet einen Standalone-Generator, mit dem sich jederzeit eine Anwendung über die Kommandozeile generieren lässt. Einige allgemeine Informationen hierzu sind der Dokumentation zu entnehmen. Ein simples Beispiel für die Nutzung findet sich ferner in diesem Artikel.

Eine Besonderheit hierbei ist, dass die verwendete jar-Datei bei jedem Build des Generators aktualisiert wird. Es handelt sich also immer um den aktuellen Git-Stand. Damit bietet es sich an, den Standalone-Generator zur kontinuierlichen Integration zu verwenden.

Funktionen im Generator zur Versionierung von Daten

in  Generator , , ,

Funktionen im Generator zur Versionierung von Daten

ModuleStudio erlaubt die Nutzung unterschiedlicher Doctrine-Erweiterungen, indem diese im jeweiligen Anwendungsmodell aktiviert und ggf. konfiguriert werden. Neben Baumstrukturen (tree / nested set), lesbaren Permalinks (sluggable) oder Übersetzungen zur Umsetzung mehrsprachiger Daten (translatable) sowie weiteren Funktionen steht hier auch die Möglichkeit zur Verfügung, die Änderungen an Datensätzen in Form einer Revisionierung aufzuzeichnen. Dieser Beitrag gibt einen Überblick über die damit einhergehenden Features. Als gemeinsame Basis der im Folgenden beschriebenen Funktionen kommt die Loggable-Extension für Doctrine zum Einsatz.

Spannende Neuerungen im Zikula Core

in  Zikula Apps , , , , ,

Spannende Neuerungen im Zikula Core

In Zikula 3 werden endlich weitere hilfreiche Funktionen von Symfony verwendet. Zikula 2.x hat bereits auf Symfony 3.4.x aufgesetzt, aber aus Rücksicht auf die Abwärtskompatibilität noch nicht alle Potenziale ausgereizt. Die aktuelle Arbeitsversion von 3.0.0 basiert indes auf Symfony 4.2.4 und setzt noch stärker auf die mit Symfony einhergehenden Möglichkeiten.

Besonders angetan bin ich von den Modernisierungen bei der Dependency Injection: mit dem sogenannten Autowiring werden Services automatisch injiziert, es ist keine manuelle Definition (via YAML oder XML) mehr notwendig. Symfony erkennt automatisch anhand der Typehints in Konstruktor oder anderen Methoden, welche Services injiziert werden müssen. Zweitens können auch Service Tags mit dem Autoconfiguring automatisch gesetzt werden: Symfony leitet hierbei aus einem Interface ab, welches Tag zu vergeben ist. Sobald also zum Beispiel ein Block oder Content Type gebaut wird, wird dieser automatisch als solcher gekennzeichnet. Wir haben dies nicht nur im Core und allen Systemmodulen eingeführt, sondern natürlich auch im ModuleStudio-Generator. Insbesondere bei Anpassungen generierter Module lassen sich unnötige Arbeitsschritte vermeiden, mußte man doch bisher immer die YAML-Definitionen ändern. Es fliegt also nicht nur unnötiger Code in die Tonne, sondern man spart auch lästige Fleißarbeit.

Die letzten Verbesserungen im ModuleStudio-Tooling

in  Zikula Apps , , ,

Die letzten Verbesserungen im ModuleStudio-Tooling

Mit den meisten ModuleStudio-Versionen werden nicht nur Korrekturen und Verbesserungen im Generator, sondern auch kleinere Veränderungen für die Editoren vorgenommen. Dieser Beitrag stellt zwei spezifische Neuerungen im Detail vor.

Verbesserte Fehlertoleranz verzeiht falsche Änderungen

In ModuleStudio 1.3.0 wurde beispielsweise dafür gesorgt, dass invalide Änderungen im textuellen Editor - egal ob unabhängig vom graphischen Editor oder eingebettet im Diagramm - dazu führen, dass das komplette Diagramm gelöscht wird.

Wie im Handbuch gezeigt, werden nicht (mehr) erkannte semantische Elemente im Diagramm markiert, was besagt, dass sie beim nächsten Speichern verschwinden würden.

Automatisierte Tests - ein Zwischenstand

in  Builds & Tests , , ,

Automatisierte Tests - ein Zwischenstand

Seit dem kürzlich angekündigten Start der Testautomatisierung von ModuleStudio ist bereits eine Menge geschehen. So gibt es knapp 1.000 Tests für die DSL, darunter vorwiegend für UI-unabhängige Komponenten, wie den Parser, den Serialisierer, den Formattierer und die Validierungsregeln. Hier haben wir eine Testabdeckung von etwa 95% erreicht und konnten einige Fehler in der Validierungsschicht beheben.

Auch der Generator wird bereits mit einer Abdeckung von über 90% getestet. Hier ging es bislang allerdings vorwiegend darum, möglichst viele Varianzen zu durchlaufen, um zum Beispiel Null Pointer Exceptions zu verhindern. Weitere Tests für einzelne inhaltliche Aspekte werden dann nach und nach auf der Basis von spezifischen Bug Reports ergänzt.