Skip to content

Build, configuration & deploiement

Build / run / test

bash
dotnet build AccmWebsite.sln
dotnet run --project src/Web/Web.csproj
dotnet test tests/Web/Tests.Web.csproj

src/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

FichierRoleSecrets
appsettings.jsonBase completenon
appsettings.Development.jsonPartage entre devsnon
appsettings.local.jsonPar 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, from info.accm@cransmontana.ch).
  • InfomaniakSmtp : mail.infomaniak.com:587, compte info@bibliocm.ch (workflow Forms). Password = secret (vide dans appsettings.json, a fournir via appsettings.local.json en dev et l'appsettings.json monte sur le serveur en staging/prod, comme les credentials Mailgun).
  • NewsletterOptIn : ApiUrl + liste de Clients (client/provider/domaine/listId).
  • Umbraco.Forms : DisableAutomaticAdditionOfDataConsentField=true, EmailImageSiteDomain=accm.spektrum.media.
  • ModelsBuilder SourceCodeAuto, uSync ExportOnSave/ImportAtStartup=Settings.
  • Logs : Serilog ecrit dans la console (sink Async->Console configure dans appsettings.json), donc visibles via docker logs en 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)

  1. Frontend : node:22.12.0-slim -> npm install + npm run build (SCSS + JS) ; selectionne le CSS backoffice par environnement.
  2. Build : SDK .NET 8 -> dotnet restore + dotnet publish -c Release (recupere les assets du stage frontend).
  3. Runtime : aspnet:8.0, ENTRYPOINT ["dotnet", "Web.dll"]. Le stage runtime declare ARG/ENV GIT_COMMIT_COUNT|SHA|DATE (infos de version lues par DashboardInfoService pour 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, artefacts TestResults/*.trx (1 semaine).
  • Stage build : image registry.internal.spektrum-suisse.ch/accm-website. build:staging (auto sur staging, tags staging + SHA) ; build:production (manuel sur master, tags prod + SHA). Exporte GIT_COMMIT_COUNT|SHA|DATE et 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.

Contributors

No contributors

Changelog

No recent changes