Site icon Blog ARC Optimizer

Réparer un échec de déploiement XM Cloud / Blogs / Perficient

Réparer un échec de déploiement XM Cloud / Blogs / Perficient


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 đŸ‘·â€â™‚ïž

  1. 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 😞.
  2. 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.
  3. 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 😅 ?).
  4. 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.
  5. Pour continuer les vĂ©rifications d’intĂ©gritĂ©, j’ai extrait le commit spĂ©cifique localement et vĂ©rifiĂ© que je pouvais :
    1. Restaurer les packages NuGet, via l’interface utilisateur et la console
    2. Construire/reconstruire la solution Visual Studio
  6. 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, de msbuild et vĂ©rifiĂ©, une fois de plus, que je pouvais restaurer les packages NuGet et crĂ©er la solution.
  7. 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
Quitter la version mobile