Übersicht
Um eine robuste Erweiterung für Discourse zu erstellen, kann es sinnvoll sein, Continuous Integration (CI) in dein Plugin oder dein Theme-Component einzubinden. Dies hilft, Fehler frühzeitig zu erkennen und die Wahrscheinlichkeit von Bugs in deinem 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 all unsere Komponenten verwendet, und wir empfehlen dir, es genauso zu machen.
Einrichtung
Um automatisierte Workflows für GitHub Actions hinzuzufügen, musst du einen .github/workflows-Ordner im Stammverzeichnis deines Repositories erstellen.
Im workflows-Ordner kannst du eine Reihe von Automatisierungen definieren, die GitHub Actions ausführen muss. Dies können beispielsweise .yml-Dateien für Linting und Tests sein.
Wir haben Template-Workflows für Plugins und Theme-Components erstellt, die du verwenden kannst. Diese sind an unsere Definitionen für „wiederverwendbare Workflows“ hier angebunden.
Im Skeleton-Repository des Templates auf GitHub kannst du auf die Schaltfläche Dieses Template verwenden klicken, um ein Plugin- oder Theme-Component-Repository basierend auf dem Template zu erstellen.
Alternativ, falls du bereits ein Projekt hast, zu dem du die Workflows hinzufügen möchtest, kopiere einfach den relevanten Workflow in den .github/workflows/-Ordner deines Repositories:
Plugins: discourse-plugin.yml
Themes und Theme-Components: discourse-theme.yml
Diese Templates sind an eine bestimmte Hauptversion unserer wiederverwendbaren Workflows gebunden. Kleine Verbesserungen, die wir an den Workflows vornehmen, werden automatisch in deinem Theme/Plugin wirksam. Bei abwärtsinkompatiblen Änderungen (z. B. die Einführung eines neuen Linters) erhöhen wir die Hauptversion der wiederverwendbaren Workflows, und du musst deinen Workflow aktualisieren, damit er auf die neue Version verweist.
Voilà! Du bist fertig eingerichtet! Erstelle einfach ein Commit oder einen PR in deinem Repository, und GitHub Actions wird die Workflows automatisch erkennen und mit der Ausführung der Jobs beginnen.
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, erhältst du durch Klicken auf die Details einige Informationen darüber, was schiefgelaufen ist, was dir Hinweise darauf geben kann, was mit deinem 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 du Tests für dein Plugin oder dein Theme-Component schreibst.
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 deinem Vorteil haben wir einige Beispiele für Plugins und Theme-Components ausgewählt, bei denen robuste Tests integriert sind:
| Plugin / Komponente | Client-seitige Tests | Server-seitige Tests |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
Dieses Dokument wird versioniert verwaltet - Vorschläge für Änderungen auf GitHub.
