Überblick
Um eine robuste Erweiterung für Discourse zu erstellen, kann es sinnvoll sein, Continuous Integration (CI) in Ihr Plugin oder Theme-Komponente aufzunehmen. Dies hilft, Fehler frühzeitig zu erkennen und die Wahrscheinlichkeit von Bugs in Ihrem Code zu verringern.
Die Einrichtung eines CI-Workflows mit GitHub Actions zur Automatisierung von Builds und Tests ist ein Ansatz, den das Discourse-Team bei allen unseren Komponenten verwendet, und wir empfehlen Ihnen, dasselbe zu tun.
Einrichtung
Um automatisierte Workflows für GitHub Actions zur Erkennung hinzuzufügen, müssen Sie einen Ordner .github/workflows im Stammverzeichnis Ihres Repositories erstellen.
Im Ordner workflows können Sie eine Reihe von Automatisierungen definieren, die von GitHub Actions ausgeführt werden müssen. Beispielsweise könnten dies .yml-Dateien für Linting und Tests sein.
Wir haben Vorlagen-Workflows sowohl für Plugins als auch für Theme-Komponenten erstellt, die Sie nutzen können. Diese verbinden sich mit unseren Definitionen für ‘wiederverwendbare Workflows’ hier.
Im Skelett-Repository der Vorlage können Sie auf GitHub auf die Taste Diese Vorlage verwenden klicken, um ein Plugin-/Theme-Komponenten-Repository basierend auf der Vorlage zu erstellen.
Alternativ können Sie, falls Sie bereits ein Projekt haben, dem Sie die Workflows hinzufügen möchten, einfach den entsprechenden Workflow in den Ordner .github/workflows/ Ihres Repositories kopieren:
Plugins: discourse-plugin.yml
Themes und Theme-Komponenten: discourse-theme.yml
Diese Vorlagen sind an eine bestimmte Hauptversion unserer wiederverwendbaren Workflows gebunden. Kleine Verbesserungen, die wir an den Workflows vornehmen, treten automatisch in Ihrem Theme/Plugin in Kraft. Bei breaking changes (z. B. Einführung eines neuen Linters) erhöhen wir die Hauptversion der wiederverwendbaren Workflows, und Sie müssen Ihren Workflow auf die neue Version aktualisieren.
Voila! Sie sind bereit! Erstellen Sie einfach einen Commit oder eine PR in Ihr Repository, und GitHub Actions erkennt die Workflows automatisch und startet die Jobs.
GitHub Actions zeigt eine Aufschlüsselung jedes Tests an und gibt nach dem Ausführen entweder ein
oder
an, je nachdem, ob der Test bestanden oder fehlgeschlagen ist.
Wenn ein Test fehlgeschlagen ist, erhalten Sie durch Klicken auf die Details einige Informationen darüber, was fehlgeschlagen ist. Dies kann Ihnen Hinweise darauf geben, was an Ihrem Code falsch ist und was behoben werden muss.
Eigene Tests hinzufügen
Damit Tests für Plugins und Komponenten effektiv funktionieren, ist es wichtig, dass Sie Tests für Ihr Plugin oder Ihre Theme-Komponente schreiben.
Details zum Schreiben von Front-End-Tests mit EmberJS finden Sie unter:
- Write acceptance tests and component tests for Ember code in Discourse
- Introduction - Testing - Ember Guides
Weitere Details zum Schreiben von RSpec-Tests mit Rails finden Sie unter:
Beispiele
Zu Ihrem Nutzen haben wir einige Beispiele für Plugins und Theme-Komponenten ausgewählt, die robuste Tests integriert haben:
| Plugin / Komponente | Client-seitige Tests | Server-seitige Tests |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
Dieses Dokument wird versioniert – Änderungen können auf GitHub vorgeschlagen werden.
