Résolution des problèmes liés aux pipelines front-end dans AEM as a Cloud Service

Lors de la conversion d’un pipeline full stack en pipeline front-end uniquement dans AEM as a Cloud Service, des échecs de création peuvent se produire en raison de dépendances spécifiques à la plateforme et d’exigences de liaison strictes. La génération de package-lock.json sous Windows ou macOS peut entraîner des incompatibilités avec le Cloud Manager Linux. En outre, les pipelines FE appliquent des contrôles de style de code qui ne sont pas présents dans les versions Maven full stack.

Notes

  • Lorsque Cloud Manager exécute un pipeline front-end, il n’exécute pas d’abord l’installation npm. Il prend simplement le package-lock.json qui se trouve dans Git et l’exécute npm audit --production --audit-level=critical. Cependant, un pipeline full stack installe les versions Node/NPM que nous demandons via le frontend-maven-plugin, il exécute l’installation npm. Par conséquent, le problème n’apparaît pas dans le pipeline full stack.

Description description

Environnement

  • Produit : AEM as a Cloud Service - Sites
  • Pipeline : pipeline front-end uniquement (FE) via Cloud Manager
  • Version du nœud : 14.19.1
  • version de npm : 6.14.x
  • Système d’exploitation pour les builds locaux : Windows (local), Linux (conteneur Cloud Manager)
  • Autorisations requises : rôle de responsable de déploiement dans Cloud Manager

Problème/Symptômes

  • Le pipeline échoue lors de l’installation de npm avec des erreurs telles que * fsevents non accessible à partir de chokida r*
  • Erreurs liées à des fichiers package-lock.json manquants ou incompatibles
  • Les versions locales réussissent sous Windows ou Mac, mais échouent dans le pipeline Cloud Manager
  • Des centaines d’erreurs de style ESLint/code provoquent des échecs de pipeline FE uniquement, tandis que les pipelines full stack n’appliquent pas ces contrôles par défaut

Résolution resolution

Essayez les étapes suivantes pour résoudre le problème :

  1. Assurez-vous package-lock.json existe dans le module ui.frontend et qu’il est validé dans votre référentiel.

  2. Régénérez les package-lock.json et les node_modules à l’aide d’un environnement Linux (utilisez le sous-système Windows pour Linux ou Docker). Pour reproduire et résoudre les problèmes de dépendance spécifiques à la plateforme pour les pipelines FE uniquement, utilisez les commandes suivantes dans un terminal WSL :  

    code language-none
    cd /path/to/your/project
    rm -rf package-lock.json node_modules
    npm install
    git add package-lock.json
    git commit -m "Regenerate package-lock.json on Linux"
    

     
    Ou exécutez dans un conteneur Linux :
     

    code language-none
    docker run --rm -v $(pwd):/app -w /app node:16-alpine \
      sh -c "rm -rf node_modules package-lock.json && npm install"
    

     

  3. Mettez à jour des dépendances obsolètes, notamment Jest, Storybook et Webpack.

  4. Utilisez npm audit avec les indicateurs de niveau de production et d’audit critique pour identifier les problèmes de dépendance restants. Par exemple : npm audit --production --audit-level=critical

  5. Validez le fichier package-lock.json régénéré de l’environnement Linux dans votre référentiel.

  6. Envoyez les modifications à la branche utilisée par le pipeline FE uniquement.

  7. Réexécutez le pipeline FE-uniquement dans Cloud Manager.

  8. Résolvez les erreurs de style ESLint/code signalées pendant le processus de création ; toutes les erreurs de ligne doivent être résolues pour un déploiement réussi.

  9. Si nécessaire à des fins de validation uniquement, supprimez temporairement linting du script de build dans package.json. Toutefois, cela n’est pas recommandé pour une utilisation en production.

  10. Vérifiez que l’étape de build se termine correctement sans erreurs de dépendance ou de liaison.

  11. Si le déploiement réussit, mais que les styles et scripts de votre site ne se chargent pas, vérifiez les paramètres Dispatcher et la configuration du réseau CDN. Assurez-vous que le vhost activé inclut le ServerAlias correct pour le domaine statique. Pour connaître les étapes, reportez-vous à ​ Le déploiement du pipeline front-end rompt le site web.

  12. Si le pipeline échoue avec BUILD_NPM_AUDIT_ERROR, supprimez tous les nœuds SiteConfig ou HtmlPageItemsConfig en conflit. Pour connaître les étapes, reportez-vous à la section Comment résoudre BUILD_NPM_AUDIT_ERROR dans le pipeline front-end AEM as a Cloud Service.

Notes

  • Le pipeline FE-uniquement applique des contrôles de style de code plus stricts que les versions Maven full stack ; toutes les erreurs de ligne doivent être résolues avant le déploiement.

  • Vous pouvez automatiser le processus de correction des erreurs de liaison JavaScript et CSS en ajoutant le script suivant à votre package.json :

    code language-none
    "scripts": {
      "lint:fix": "npm run lint:js:fix && npm run lint:css:fix"
    }
    

Cela vous permet d’exécuter npm run lint:fix pour corriger automatiquement de nombreux problèmes de liaison avant d’envoyer les modifications.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f