Skip to content

Build, base de donnees, postBuild, deploiement

Cake (build.cake)

Lance via le bootstrapper build.ps1 (telecharge NuGet + Cake puis execute build.cake). Arguments principaux : --target, --skin (defaut vonroten), --configuration (dev ou release), --buildmode (single ou batch).

Variables clefs en tete de build.cake : umbracoVersion = 6.2.6, versionUcommerce = 7.3.1.16343, IIS local iisName = starterv2 / domain = v2.nanoxi.local, dossier de sortie website. La variable d'environnement CI (posee par GitLab) neutralise les operations IIS/DB pour les builds purs. Les metadonnees client viennent de doc/StarterKitv2_InfosTechniques.xlsx via customerConfigLib.

Cibles principales :

CibleRole
Build-NanoxiBuilderCompile l'outil de config toolsnanoxi/Nanoxi.Builder
Build-StarterKitBaseCompile StarterKit_base.sln (MSBuild)
Build-ShopCompile StarterKit_shop.sln seulement si customerConfigLib.IsShopEnabled()
Build-CustomerCompile src/Nanoxi.Customization/StarterKit_<skin>.sln si elle existe
Clean / Clean-BinObj / Clean-Customer-BinObj / Clean-App_DataNettoyages
Download-Umbraco / Unzip-UmbracoRecupere et extrait UmbracoCms.6.2.6.zip (depuis dl-local.nanoxi.com, fallback blob Umbraco) dans website/
Restore-DatabaseOriente Create-Virgin-Umbraco-Database + Recreate-User-Database
Create-Virgin-Umbraco-DatabaseApplique db/u6_base-6.2.6.sql
Recreate-User-DatabaseCree login/user UmbracoUser_<skin> + roles
Create-Website / Poke-ConnectionStringCree le site IIS local, injecte la connection string
Api-Install-Packages-Stage1Installe les packages Umbraco via l'API
Umbraco-Packages-Extract / Ucommerce-Extract-Package / Install-uCommerceDeploiement des packages et de uCommerce
PostbuildAppelle postBuildAction.ps1 (DLLs -> website/bin, merge configs, fixes v6)
Patch-UmbracoDllRemplace umbraco.dll en configuration=release (patch ScheduledPublishController)
Ensure-Production-ConfigCopie prodconfig/<skin>/ (Web.config, Config/, licence uCommerce) et supprime les *.Debug.*
Create-ChangeLogGenere le changelog via Nanoxi.Builder
Review-AppDefaut local : pipeline complet build + DB + IIS + packages + uCommerce
CI-BuildBuild deployable sans DB/IIS/API (appele par le CI)
Build-Docker-ImageTag ncr.nanoxi.com/starterkitv2:<skin>-<version> (version lue dans Nanoxi.App.Mvc.dll) ; push si release
ReleaseReview-App + Clean-App_Data + Build-Docker-Image
Release-Spk / Build-Zip-FileProduit un zip de migration starterkitv2.<skin>.<version>.zip (vers Z:/migrations-v2/)
Release-Spk-AllBoucle Release-Spk sur une liste de skins en dur

Note : la cible par defaut de build.cake est Test (debug), mais l'usage normal passe par build.ps1 --target="Review-App".

postBuildAction.ps1

Script PowerShell legacy (~46 Ko) lance apres chaque compilation (manuellement, par Cake Postbuild, ou en post-build VisualStudio). Il copie les DLLs vers website/bin, merge les configs par skin, applique des overrides selon le MachineName, et applique les "fixes v6". Considere comme intouchable sauf necessite (commentaire dans build.cake : "too complex to migrate").

build.cake normalise plusieurs noms de machines de dev/stage vers WRK-STAGE pour permettre une config commune.

Base de donnees

  • SQL Server, une base par client : umbracoCMS_<skin> avec login applicatif UmbracoUser_<skin> (script de creation dans Readme.md).
  • Connexion via CI_SQL_CONNECTION_STRING (sinon Windows Auth). DataSource par defaut 127.0.0.1.
  • Schema de base : db/u6_base-6.2.6.sql. Donnees/structure injectees par les scripts ordonnes de data/ puis par l'API d'install (voir ../modules/content-model.md).
  • Mise a jour d'un site existant : restaurer un backup de la base de prod, puis appliquer l'upgrade via l'API (/Umbraco/Api/StarterKit/Upgrade).

Docker

dockerfile
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022
# Install vcredist 2013 + URL Rewrite 2.1, polices (Arial/Calibri), region fr-CH,
# permissions website (Set-WebsitePermissons.ps1)

Images taguees ncr.nanoxi.com/starterkitv2:<skin>-<version>. Registry : https://ncr.nanoxi.com/v2/_catalog. Lancement type (volumes Media + Customer montes) : voir ReadmeDocker.md.

NSIS (historique)

Avant Docker/CI, le deploiement passait par des installeurs NSIS (dossier nsis/, cible MakeAndPost -> make.ps1). Toujours present dans le repo mais largement supplante par Docker + GitLab CI.

CI/CD (GitLab)

.gitlab-ci.yml, branche par defaut master. Architecture pull-based, aucun secret GitLab requis (tout derive de $SKIN + branche).

  • workflow : pipeline declenche uniquement si branche develop OU source web (Run pipeline). Push sur master/staging ne lance rien automatiquement.
  • stages : build -> deploy (+ docs, voir plus bas).
  • build (tag runner windows) : build.ps1 -Target CI-Build -Configuration release --skin=$SKIN, ecrit version.txt/pipeline.txt. Artefact website/ + deploy/App_Offline.htm (2 semaines). Variable SKIN (defaut vonroten) choisie au "Run pipeline".
  • deploy (template .deploy_iis_local, runner sur l'IIS) : pose App_Offline.htm, stoppe l'app pool umb_<skin>_<env>, robocopy /MIR vers E:\<skin>\website en preservant Config, App_Data, media et Web.config, redemarre le pool.
    • deploy:staging (tag windows-staging-iis, branche staging, manuel)
    • deploy:production (tag windows-prod-iis, branche master, manuel)

Mapping branche -> comportement : develop = build auto (test de compilation) ; master/staging = via "Run pipeline" web + variable SKIN, puis deploy manuel.

Synchro de la doc agent (composant sync-claude-docs)

Le bloc include ajoute le composant sync-claude-docs (stage docs). Les jobs sync-claude-docs et trigger-docs-build rsyncent .claude/docs/**/*.md vers le serveur de doc interne et declenchent le rebuild du site VitePress. Ils tournent sur main/master/staging, soit en pipeline web, soit lorsque des fichiers sous .claude/docs/** changent (.docs_rules).

Attention : le workflow: actuel n'autorise les pipelines que sur develop ou source web. Un simple push sur master/staging (sans Run pipeline) ne declenche donc PAS la synchro doc. La synchro doc sur master/staging suppose un pipeline web (Run pipeline) ou un ajustement du workflow:.

Gotchas dev

  • Umbraco 6 : cache XML (umbraco.config), recyclage du pool IIS souvent necessaire apres install/upgrade.
  • Packages backoffice (uComponents, Contour, Digibiz, Vizioz, MediaProtect, uCommerce) deployes manuellement / via l'API ; Contour ajoute ses propres cles au web.config.
  • Ne pas editer website/ ni les .css generes ; editer src/, design/ (.less), prodconfig/.
  • Certains scripts referencent des chemins en dur (D:\NanoxiGIT\starterkitv2, Z:\migrations-v2).

Contributors

No contributors

Changelog

No recent changes