Workflows
Parcours dev - mise en place locale
nvm use 22.12.0, puiscd src/Webetnpm install.- Base de donnees : par defaut
Server=localhost\sqlexpress;Database=UmbracoBaseTemplate;User Id=dev;Password=dev. Override viaappsettings.local.json(git-ignore) ou variable d'env.UpgradeUnattended=truecree/migre la base au boot. - (Optionnel) SMTP local :
docker run --rm -it -p 5000:80 -p 2525:25 rnwood/smtp4dev(UI sur http://localhost:5000). - Backend :
dotnet run --project src/Web/Web.csproj. - Frontend en parallele :
npm run dev(build + watch SCSS/JS, live-reload ; proxy/->https://localhost:44360). - Login backoffice rapide en DEBUG :
GET /lconnecte le premier utilisateur@spektrummedia.com.
Parcours dev - demarrer un projet aval depuis le template
upstream = ce repo template, origin = le repo du projet aval.
- Creer le repo GitLab (branche
master, sans.gitignore). - Cloner, creer
developetstaging, les pousser. - Lier et merger le template :bash
git checkout develop git remote add upstream git@gitlab.internal.spektrum-suisse.ch:spektrum/umbraco-base-project.git git fetch upstream git merge upstream/v17 --allow-unrelated-histories # resoudre les conflits (garder la version du template) git commit -m "Merge upstream v17 into develop" git push origin develop - Renommer
UmbracoBaseTemplate.slnen<MonProjet>.sln. - Configurer la base et renseigner
UmbracoApplicationUrl. - Merger
develop->staging->master. Adapter le README aux specificites du projet.
Parcours dev - mise a jour depuis le template
git checkout develop
git fetch upstream
git merge upstream/v17
git push origin developParcours dev - ajouter une fonctionnalite
- Service / composer / content finder / controller : voir
../architecture/patterns.md. - Document type : backoffice + uSync, voir
../modules/content-model.md. - Theme ou module JS : voir
../architecture/frontend-build.md. - Outil marketing : voir
../modules/cookies-marketing.md(consentement obligatoire). - Penser a mettre a jour la doc concernee (protocole dans le CLAUDE.md racine).
Régénérer les modèles ModelsBuilder
ModelsBuilder tourne en SourceCodeAuto : les classes de src/Web/umbraco/Models/*.generated.cs sont réécrites à chaque sauvegarde d'un content type dans le backoffice. C'est le seul déclencheur.
Piège : quand on ajoute un document type en écrivant directement le .config sous uSync/v17/, la régénération n'a pas lieu. uSync supprime les notifications de sauvegarde pendant son import au démarrage, donc rien ne prévient ModelsBuilder. Les modèles restent absents, et une vue Razor qui les référence ne compile pas.
Procédure
dotnet run --project src/Web/Web.csproj. uSync importe les nouveaux types au démarrage.- Backoffice -> Settings -> Document Types -> ouvrir le type concerné -> Save. Refaire pour chaque type ajouté ou modifié. Chaque sauvegarde réécrit les modèles.
- Vérifier les fichiers apparus dans
src/Web/umbraco/Models/. dotnet build: les vues compilent désormais contre les modèles générés.
Si le build de l'étape 1 échoue parce que des vues référencent déjà des modèles inexistants, décommenter le bloc RazorCompileOnBuild / RazorCompileOnPublish = false dans src/Web/Web.csproj (il y est, en commentaire, prêt à servir), faire le cycle, puis le re-commenter. Laisser la compilation Razor désactivée supprimerait le seul garde-fou qui vérifie les vues au build.
Pour un agent
Un agent ne peut pas exécuter cette procédure : elle demande de lancer le site et de passer par le backoffice. Il doit s'arrêter et demander la régénération à l'utilisateur, jamais contourner en écrivant Model.Value<T>("alias"). Voir ../architecture/patterns.md, section "Accéder au contenu".
Contrôle après régénération
Ouvrir le .generated.cs et lire la ligne de déclaration de la classe :
public partial class HomePage : PublishedContentModel, ICookiesSettings, IPageSettingsUne composition manquante dans cette liste ne casse pas le build. Elle fait seulement remonter null au runtime aux helpers qui la cherchent (AncestorOrSelf<ISiteSettings>()), ce qui vide silencieusement un en-tête ou un pied de page. Vérifier la ligne, pas seulement que ça compile.
Parcours dev - release / deploiement
- CI : pipeline sur merge request vers
masteret commits surmaster(build backend + frontend). - Image Docker :
docker build -t columbia-registry.spektrum.media/umb_<site>:<env> -f hosting/Dockerfile .puisdocker push; deploiement viadocker-compose.ymladapte. Voir../architecture/build-deploy.md.
Parcours editeur (backoffice Umbraco)
- Backoffice en
fr-FRpar defaut. Contenu multilingue (languesfr,en-uslivrees). - Pages : creer sous l'arbre de contenu (
homePageen racine de site). Les pages portent la compositionpageSettings(SEO, masquage sitemap). - Composer le contenu via les sections/elements de blocs (BlockGrid).
- Reglages transverses :
cookiesSettings(textes du popup cookies),marketingSettings(ID GA4). - Pages techniques :
notFoundPage(404 par site),internalServerErrorPage(500).

