Übersicht
Um eine robuste Erweiterung für Discourse zu erstellen, kann es sinnvoll sein, Continuous Integration (CI) in Ihr Plugin oder Ihr Theme-Component zu integrieren. 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 für alle unsere Komponenten verwendet, und wir empfehlen Ihnen, dasselbe zu tun.
Einrichtung
Um automatisierte Workflows für GitHub Actions 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 GitHub Actions ausführen muss. Dies könnten beispielsweise .yml-Dateien für Linting und Tests sein.
Wir haben Vorlagen-Workflows für beide Plugins und Theme-Components erstellt, die Sie nutzen können. Diese sind mit unseren Definitionen für ‘wiederverwendbare Workflows’ hier verbunden.
Im Skelett-Repository der Vorlage können Sie auf GitHub auf die Schaltfläche Diese Vorlage verwenden klicken, um ein Plugin- oder Theme-Component-Repository basierend auf der Vorlage zu erstellen.
Alternativ können Sie, wenn Sie bereits ein Projekt haben, dem Sie die Workflows hinzufügen möchten, einfach den relevanten Workflow in den Ordner .github/workflows/ Ihres Repositories kopieren:
Plugins: discourse-plugin.yml
Themes und Theme-Components: discourse-theme.yml
Diese Vorlagen sind an eine bestimmte Hauptversion unserer wiederverwendbaren Workflows gebunden. Kleine Verbesserungen, die wir an den Workflows vornehmen, werden automatisch in Ihrem Theme/Plugin wirksam. Bei brechenden Änderungen (z. B. Einführung eines neuen Linters) erhöhen wir die Hauptversion der wiederverwendbaren Workflows, und Sie müssen Ihren Workflow aktualisieren, damit er auf die neue Version verweist.
Voilà! Sie sind bereit! Erstellen Sie einfach einen Commit oder einen PR in Ihrem Repository, und GitHub Actions erkennt die Workflows automatisch und beginnt mit der Ausführung der Jobs.
GitHub Actions zeigt eine Aufschlüsselung jedes Tests an und gibt nach der Ausführung entweder ein
oder ein
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, was Ihnen Hinweise darauf geben kann, was mit Ihrem Code nicht stimmt und was behoben werden muss.
Eigene Tests hinzufügen
Damit die Tests für Plugins und Komponenten effektiv funktionieren, ist es wichtig, dass Sie Tests für Ihr Plugin oder Ihr Theme-Component schreiben.
Für Details dazu, wie man Frontend-Tests mit EmberJS schreibt, siehe:
- Write acceptance tests and component tests for Ember code in Discourse
- Introduction - Testing - Ember Guides
Für weitere Details zum Schreiben von RSpec-Tests mit Rails siehe:
Beispiele
Zu Ihrem Vorteil haben wir einige Beispiele für Plugins und Theme-Components ausgewählt, die eine robuste Testintegration aufweisen:
| Plugin / Komponente | Client-seitige Tests | Server-seitige Tests |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
Dieses Dokument wird versioniert – schlagen Sie Änderungen auf GitHub vor.
