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 :
| Cible | Role |
|---|---|
| Build-NanoxiBuilder | Compile l'outil de config toolsnanoxi/Nanoxi.Builder |
| Build-StarterKitBase | Compile StarterKit_base.sln (MSBuild) |
| Build-Shop | Compile StarterKit_shop.sln seulement si customerConfigLib.IsShopEnabled() |
| Build-Customer | Compile src/Nanoxi.Customization/StarterKit_<skin>.sln si elle existe |
| Clean / Clean-BinObj / Clean-Customer-BinObj / Clean-App_Data | Nettoyages |
| Download-Umbraco / Unzip-Umbraco | Recupere et extrait UmbracoCms.6.2.6.zip (depuis dl-local.nanoxi.com, fallback blob Umbraco) dans website/ |
| Restore-Database | Oriente Create-Virgin-Umbraco-Database + Recreate-User-Database |
| Create-Virgin-Umbraco-Database | Applique db/u6_base-6.2.6.sql |
| Recreate-User-Database | Cree login/user UmbracoUser_<skin> + roles |
| Create-Website / Poke-ConnectionString | Cree le site IIS local, injecte la connection string |
| Api-Install-Packages-Stage1 | Installe les packages Umbraco via l'API |
| Umbraco-Packages-Extract / Ucommerce-Extract-Package / Install-uCommerce | Deploiement des packages et de uCommerce |
| Postbuild | Appelle postBuildAction.ps1 (DLLs -> website/bin, merge configs, fixes v6) |
| Patch-UmbracoDll | Remplace umbraco.dll en configuration=release (patch ScheduledPublishController) |
| Ensure-Production-Config | Copie prodconfig/<skin>/ (Web.config, Config/, licence uCommerce) et supprime les *.Debug.* |
| Create-ChangeLog | Genere le changelog via Nanoxi.Builder |
| Review-App | Defaut local : pipeline complet build + DB + IIS + packages + uCommerce |
| CI-Build | Build deployable sans DB/IIS/API (appele par le CI) |
| Build-Docker-Image | Tag ncr.nanoxi.com/starterkitv2:<skin>-<version> (version lue dans Nanoxi.App.Mvc.dll) ; push si release |
| Release | Review-App + Clean-App_Data + Build-Docker-Image |
| Release-Spk / Build-Zip-File | Produit un zip de migration starterkitv2.<skin>.<version>.zip (vers Z:/migrations-v2/) |
| Release-Spk-All | Boucle Release-Spk sur une liste de skins en dur |
Note : la cible par defaut de
build.cakeestTest(debug), mais l'usage normal passe parbuild.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 applicatifUmbracoUser_<skin>(script de creation dansReadme.md). - Connexion via
CI_SQL_CONNECTION_STRING(sinon Windows Auth).DataSourcepar defaut127.0.0.1. - Schema de base :
db/u6_base-6.2.6.sql. Donnees/structure injectees par les scripts ordonnes dedata/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
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
developOU sourceweb(Run pipeline). Push surmaster/stagingne lance rien automatiquement. - stages :
build->deploy(+docs, voir plus bas). - build (tag runner
windows) :build.ps1 -Target CI-Build -Configuration release --skin=$SKIN, ecritversion.txt/pipeline.txt. Artefactwebsite/+deploy/App_Offline.htm(2 semaines). VariableSKIN(defautvonroten) choisie au "Run pipeline". - deploy (template
.deploy_iis_local, runner sur l'IIS) : poseApp_Offline.htm, stoppe l'app poolumb_<skin>_<env>,robocopy /MIRversE:\<skin>\websiteen preservantConfig,App_Data,mediaetWeb.config, redemarre le pool.deploy:staging(tagwindows-staging-iis, branchestaging, manuel)deploy:production(tagwindows-prod-iis, branchemaster, 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 surdevelopou sourceweb. Un simple push surmaster/staging(sans Run pipeline) ne declenche donc PAS la synchro doc. La synchro doc sur master/staging suppose un pipelineweb(Run pipeline) ou un ajustement duworkflow:.
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.cssgeneres ; editersrc/,design/(.less),prodconfig/. - Certains scripts referencent des chemins en dur (
D:\NanoxiGIT\starterkitv2,Z:\migrations-v2).

