Aller au contenu

Documentation SchulyPlugins

Plugins officiels pour le backend Schuly. Chaque plugin vit dans son propre dossier sous src/, cible .NET 10 et implémente ISchulyPlugin depuis Schuly.Plugin.Abstractions (consommé comme PackageReference NuGet). Le backend charge les DLL des plugins compilées au démarrage et pilote leur cycle de vie (ConfigureServices, ConfigureEndpoints, MigrateAsync), ainsi que toute IPluginBackgroundTask récurrente. Les plugins sont compilés et livrés sous forme de DLL sur la branche repo (distribution façon Aniyomi), puis déposés par les opérateurs dans le dossier /app/plugins/ du backend.

Organisation du dépôt

CheminRôle
src/Schuly.Plugin.Example/Plugin de référence / gabarit. ISchulyPlugin minimal avec des endpoints en API minimale, des routes anonymes et authentifiées, et une démo de coffre-fort propre au plugin.
src/Schuly.Plugin.Schulware/Intégration Schulnetz via SchulwareAPI. EF Core + Postgres, client généré par Kiota, tâche de synchronisation en arrière-plan, contrôleurs MVC.
src/Schuly.Plugin.OdaOrg/Intégration OdaOrg (portail d'apprentissage de l'ICT-BBAG). HttpClient + scraper AngleSharp, EF Core + Postgres, tâche de synchronisation en arrière-plan.
.github/workflows/build_push.ymlDétecte chaque src/Schuly.Plugin.*/*.csproj, compile, puis publie les DLL + l'index sur la branche repo.
.github/workflows/sync-version-on-release.ymlSynchronisation de version lors d'une release.

Un dossier de plugin Schulware/OdaOrg est organisé ainsi :

DossierContenu
Controllers/Contrôleurs ASP.NET MVC - routes HTTP (l'hôte enregistre l'assembly comme ApplicationPart MVC, elles sont donc découvertes automatiquement).
Services/Tâche en arrière-plan (IPluginBackgroundTask) et services de synchronisation/connexion à portée limitée (scoped).
Dtos/ / Models/Un record par fichier.
Data/Entités EF Core, DbContext, fabrique design-time et Migrations/.
Infrastructure/Fabriques/utilitaires pour les clients externes.
Client/Client API généré par Kiota (Schulware uniquement).
config.ymlExemple de configuration à l'exécution (Schuly.Plugin.<Name>.yml dans le répertoire de configuration des plugins du backend).

Documents

DocContenu
setup/development.mdPrérequis, compilation d'un plugin, exécution face à un backend en production.
adding-a-plugin.mdCréer le gabarit d'un nouveau plugin + le cycle de vie ISchulyPlugin.
migrations.mdMigrations EF Core par plugin et la base Postgres dédiée.
setup/kiota-client.mdRégénérer le client Kiota de Schulware.
setup/distribution.mdComment les plugins sont compilés et livrés sur la branche repo.
contributing.mdLe processus obligatoire issue → branche → PR → squash.