Build, configuration & deploiement
Build / run / test
dotnet build AccmWebsite.sln
dotnet run --project src/Web/Web.csproj
dotnet test tests/Web/Tests.Web.csprojsrc/Web/Web.csproj : net8.0, ImplicitUsings/Nullable enabled, ModelsBuilder SourceCodeAuto (Web.umbraco.Models). Packages cles : Umbraco.Cms 13.15.1, uSync 13.3.2, Umbraco.Forms 13.9.7, Umbraco.Community.Contentment 5.1.1, Skybrud.Umbraco.Redirects 13.0.9, itext 9.3, MailKit 4.17, Newtonsoft.Json 13.0.4, GoogleAuthenticator, Fluid.Core 2.4, Our.Umbraco.GMaps 2.1.3, Spk.Common.Helpers, Microsoft.ICU.ICU4C.Runtime. Advisory residuel : GHSA-54mj-vcvj-q3v5 sur Umbraco.Cms (pas de correctif en v13 — necessite v14+).
Login dev rapide : en local, GET /l connecte automatiquement le premier compte back-office @spektrummedia.com et redirige vers /umbraco (Controllers/DevLoginController.cs, importe de pully-website). Double garde-fou : compile uniquement en #if DEBUG + verification IsDevelopment() au runtime (404 sinon).
Skybrud.Umbraco.Redirects : gestion des redirections d'URL depuis le back-office (dashboard + property editor). Plug-and-play (s'auto-enregistre, pas de composer custom) ; cree/maintient ses tables via les migrations Umbraco au demarrage -> rien a faire manuellement, mais la migration s'applique au premier boot de chaque environnement (dev/staging/prod).
Configuration
| Fichier | Role | Secrets |
|---|---|---|
appsettings.json | Base complete | non |
appsettings.Development.json | Partage entre devs | non |
appsettings.local.json | Par dev (git-ignore) | oui |
Cles importantes :
HeadlessCmsApi:BaseUrl(ex. https://accm-headless.spektrum.media/),ApiKey,DomainUrl,TimeoutSeconds=30,ArticleDetailCacheSeconds=300,WebhookSecret.Umbraco.CMS.Global.Smtp: Mailgun (smtp.eu.mailgun.org:587, frominfo.accm@cransmontana.ch).InfomaniakSmtp:mail.infomaniak.com:587, compteinfo@bibliocm.ch(workflow Forms).Password= secret (vide dansappsettings.json, a fournir viaappsettings.local.jsonen dev et l'appsettings.jsonmonte sur le serveur en staging/prod, comme les credentials Mailgun).NewsletterOptIn:ApiUrl+ liste deClients(client/provider/domaine/listId).Umbraco.Forms:DisableAutomaticAdditionOfDataConsentField=true,EmailImageSiteDomain=accm.spektrum.media.- ModelsBuilder
SourceCodeAuto, uSyncExportOnSave/ImportAtStartup=Settings. - Logs : Serilog ecrit dans la console (sink
Async->Consoleconfigure dansappsettings.json), donc visibles viadocker logsen staging/prod (plus de Sentry depuis juillet 2026).
Base de donnees & medias
MSSQL sur vmsqla001 : umb_accm_staging / umb_accm_prod. VM Azure Columbia, medias en local. Schema gere par Umbraco + uSync (pas d'EF migrations).
Docker (hosting/Dockerfile, multi-stage)
- Frontend :
node:22.12.0-slim->npm install+npm run build(SCSS + JS) ; selectionne le CSS backoffice par environnement. - Build : SDK .NET 8 ->
dotnet restore+dotnet publish -c Release(recupere les assets du stage frontend). - Runtime :
aspnet:8.0,ENTRYPOINT ["dotnet", "Web.dll"]. Le stage runtime declareARG/ENV GIT_COMMIT_COUNT|SHA|DATE(infos de version lues parDashboardInfoServicepour le tableau de bord "Système").
Version de build (tableau de bord "Système")
Le back-office affiche une carte "Version & build" (App_Plugins/AccmDashboard) dont le numero 1.X.Y.Z derive du nombre de commits git. La CI calcule ces infos (git rev-list --count, short SHA, date ISO) et les passe en build-args au Dockerfile ; DashboardInfoService les relit via variables d'environnement au runtime. En local (sans CI), la version retombe sur 1.0.0.dev. Necessite GIT_DEPTH: 0 en CI pour un comptage complet.
CI/CD (GitLab)
.gitlab-ci.yml :
- Stage test (toutes branches concernees + MR) :
dotnet test tests/Web/Tests.Web.csproj -c Release, artefactsTestResults/*.trx(1 semaine). - Stage build : image
registry.internal.spektrum-suisse.ch/accm-website.build:staging(auto surstaging, tags staging + SHA) ;build:production(manuel surmaster, tags prod + SHA). ExporteGIT_COMMIT_COUNT|SHA|DATEet les transmet en--build-arg(version du tableau de bord "Système"). - Note : ancien pipeline CircleCI ; le pipeline actif est GitLab CI.
Branches
feature/* -> develop -> staging (QA) -> master (prod). develop et staging restent equivalents.
Tests
tests/Web/ (xUnit 2.9.2, Moq + Moq.Contrib.HttpClient). Vrais tests presents : HeadlessArticleServiceTests, HeadlessArticleServiceQueryTests, HeadlessAuthorServiceTests, HeadlessMultimediaServiceTests, NewsletterOptInServiceTests, + un DummyTest scaffold.

