Production
L'API est livrée sous forme d'image Docker multi-architecture construite à partir de src/Schuly.API/Dockerfile.
Image du conteneur
- Le contexte de build est
./src. Les cheminsCOPYdu Dockerfile sont relatifs à ce répertoire, pas à la racine du dépôt. - Étapes de build : build/publish SDK sur
mcr.microsoft.com/dotnet/sdk:10.0, runtime surmcr.microsoft.com/dotnet/aspnet:10.0. Le point d'entrée estdotnet Schuly.API.dll. - Le fichier
application.propertiesà la racine du dépôt (queDirectory.Build.propslit normalement pour la version) n'est pas dans le contexte de build, donc l'image est construite avec-p:Version=$VERSION. Le workflow de release transmet le tag de release commeVERSION; cela garde la version de l'assembly hôte alignée avec ce à quoi se lient les plugins chargés à l'exécution. - L'image pré-crée
/app/pluginset/app/plugins-configpour les plugins chargés à l'exécution et leur configuration propre à chaque plugin.
Versionnement + release
Source de vérité unique : application.properties (<version>). src/Directory.Build.props la lit via XmlPeek.
Publier une GitHub Release déclenche docker-publish-release.yaml :
sync-version- compare le tag de release (levretiré) àapplication.properties. En cas de différence, ouvre une brancherelease-sync/<version>qui met à jour le fichier et fusionne automatiquement (squash) la PR dansmain.build-and-push-multiarch- construitlinux/amd64+linux/arm64depuis./srcet pousse les tags :ghcr.io/schulydev/schuly:<semver>plus:<major>,:<major>.<minor>, et:latest(latest uniquement pour les versions non pré-release).<DOCKERHUB_USERNAME>/schuly:<semver>(Docker Hub, au mieux - l'étape de connexion estcontinue-on-error).
Migrations au démarrage
Le conteneur applique automatiquement les migrations EF Core au démarrage (ApplyMigrations() dans Program.cs → db.Database.Migrate()) et alimente le catalogue des systèmes scolaires. Aucune étape de migration séparée n'est requise lors du déploiement ; assure-toi simplement que la base de données est accessible via la chaîne de connexion SchulyDatabase. Voir Migrations et Configuration.
