Introduction đ
La semaine derniĂšre, jâai remarquĂ© que les dĂ©ploiements sur Sitecore XM-Cloud Ă©chouaient sur lâun de mes projets. Dans cet article de blog, je passerai en revue les Ă©tapes de dĂ©pannage que jâai suivies et la nature du problĂšme. Pour fournir un peu plus de contexte sur la configuration DevOps pour ce projet particulier, un Azure DevOps le pipeline exĂ©cute un script. Ce script utilise le CLI Sitecore et le plugin Sitecore XM Cloud dĂ©ploiement cloud commande Ă dĂ©ployer sur XM Cloud. Le dernier dĂ©ploiement rĂ©ussi remonte Ă quelques jours seulement et il nây a pas eu beaucoup de changements de code depuis. Au dĂ©part, jâĂ©tais assez perplexe mais bon, que faire Ă part commencer par le hautâŠ
DĂ©pannage đ·ââïž
- Quiconque a travaillĂ© avec des services SaaS basĂ©s sur le cloud sait que les pannes passagĂšres existent, et XM Cloud ne fait pas exception. La premiĂšre chose que jâai essayĂ©e a Ă©tĂ© de simplement rĂ©exĂ©cuter lâĂ©tape dĂ©faillante de notre pipeline pour voir sâil ne sâagissait que dâun « simple problĂšme ». HĂ©las, plusieurs tentatives de dĂ©ploiement ultĂ©rieures ont Ă©chouĂ© avec la mĂȘme erreur. Dâaccord, trĂšs bien, ce nâĂ©tait pas un problĂšme passager đ.
- En examinant les journaux dans lâinterface XM Cloud Deploy, lâĂ©tape de construction Ă©chouait systĂ©matiquement. En explorant les journaux, plusieurs erreurs de compilation se sont produites faisant rĂ©fĂ©rence Ă des assemblys Sitecore manquants. Par exemple: erreur CS0246 : le type ou le nom de lâespace de noms « Item » est introuvable (il vous manque une directive using ou une rĂ©fĂ©rence dâassembly ?). Cela suggĂ©rait un problĂšme avec la restauration NuGet ou avec la compilation de maniĂšre plus gĂ©nĂ©rale.
- RĂ©exĂ©cution des Ă©tapes ayant Ă©chouĂ© dans un pipeline Azure DevOps utilise le mĂȘme commit qui a Ă©tĂ© associĂ© Ă la premiĂšre exĂ©cutionâle dernier code de la branche nâest pas extrait Ă chaque tentative de rĂ©exĂ©cution. Cela signifiait que le code utilisĂ© pour le dernier dĂ©ploiement rĂ©ussi câĂ©tait le mĂȘme code utilisĂ© pour les tentatives ultĂ©rieures. En dâautres termes, ceci probablement nâĂ©tait pas un problĂšme de code (derniers mots cĂ©lĂšbres, non đ ?).
- Juste pour ĂȘtre sĂ»r, jâai comparĂ© plusieurs commits rĂ©cents sur notre branche de dĂ©veloppement et, oui, il nây a eu aucun changement qui aurait pu interrompre la compilation depuis le dernier dĂ©ploiement rĂ©ussi.
- Pour continuer les vĂ©rifications dâintĂ©gritĂ©, jâai extrait le commit spĂ©cifique localement et vĂ©rifiĂ© que je pouvais :
- Restaurer les packages NuGet, via lâinterface utilisateur et la console
- Construire/reconstruire la solution Visual Studio
- AprĂšs avoir revisitĂ© et comparĂ© les journaux XM Cloud Deploy, jâai remarquĂ© que la version de
msbuild
avait changĂ© entre le dernier dĂ©ploiement rĂ©ussi et les dĂ©ploiements Ă©chouĂ©s les plus rĂ©cents. Jâai tĂ©lĂ©chargĂ© la mĂȘme version, plus rĂ©cente, demsbuild
et vĂ©rifiĂ©, une fois de plus, que je pouvais restaurer les packages NuGet et crĂ©er la solution. - Enfin, jâai confirmĂ© que le build de validation configurĂ© pour la branche de dĂ©veloppement (via politiques de succursale dans Azure DevOps) fonctionnait comme prĂ©vu et crĂ©ait avec succĂšs la solution Ă chaque fois quâune nouvelle demande dâextraction Ă©tait crĂ©Ă©e.
Ă ce stade, pendant que je continuais Ă analyser les journaux de dĂ©ploiement, jâai ouvert un ticket dâassistance Sitecore pour leur donner mon avis đââïž. Jâai fourni une assistance avec les derniers journaux de build fonctionnels connus, les derniers journaux de build ayant Ă©chouĂ© et la liste de mes Ă©tapes de dĂ©pannage jusquâĂ ce point.
La solution đ©č
AprĂšs avoir reçu une rĂ©ponse du support Sitecore, il sâest avĂ©rĂ© que Sitecore avait rĂ©cemment modifiĂ© la façon dont le buildTargets
propriété dans le xmcloud.build.json
Le fichier a Ă©tĂ© consommĂ© et utilisĂ© dans le cadre des dĂ©ploiements. Pour citer lâingĂ©nieur du support :
Il y a eu quelques changements dans le processus de construction, et maintenant les cibles de construction sont chargées à partir de la liste « buildTargets ». Les versions de travail précédentes utilisaient directement le fichier « .sln ».
Il semble que cela ait empĂȘchĂ© la construction de fonctionner correctement pour certains projets.
Le correctif suggéré consistait à cibler spécifiquement le fichier de solution Visual Studio pour garantir que la restauration et la compilation du package NuGet de déploiement XM Cloud fonctionnaient comme prévu. Mon interprétation du changement était « XM Cloud Deploy était utilisé pour pas se soucier/respecter buildTargets
⊠mais maintenant câest le cas.
AprÚs avoir créé une pull request pour modifier le buildTargets
propriété à partir de ceci (ciblant le projet spécifique de niveau supérieur) :
{ ... "buildTargets": [ "./src/platform/Project/Foo.Project.Platform/Platform.csproj" ] ... }
âŠĂ ceci (ciblant la solution) :
{ ... "buildTargets": [ "./Foo.sln" ] ... }
âŠle prochain dĂ©ploiement sur XM Cloud (via CI/CD) a fonctionnĂ© comme prĂ©vu. â đ
AprĂšs avoir demandĂ© Ă lâingĂ©nieur du support Sitecore oĂč ce changement avait Ă©tĂ© documentĂ©, ils lâont gracieusement signalĂ© en interne et publiĂ© un nouvel Ă©vĂ©nement sur le site. Page dâĂ©tat du sitecore pour reconnaĂźtre le changement/le problĂšme : Le dĂ©ploiement ne parvient pas Ă se construire.
Si vous remarquez que vos dĂ©ploiements XM Cloud Ă©chouent lors de lâĂ©tape de gĂ©nĂ©ration lors de la compilation de votre solution Visual Studio, assurez-vous de cibler le fichier de solution (.sln
) et non un fichier de projet spécifique (.csproj
) dans le buildTargets
propriété dans le xmcloud.build.json
dossier⊠parce que câest important maintenant, apparemment đ.
Merci pour la lecture! đ
Source link