Solução de problemas de falhas de pipeline de front-end no AEM as a Cloud Service

Ao converter um pipeline de pilha completa em um pipeline somente de front-end (FE) no AEM as a Cloud Service, podem ocorrer falhas de build devido a dependências específicas da plataforma e a requisitos estritos de impressão. Gerar o package-lock.json no Windows ou no macOS pode causar incompatibilidades com o Cloud Manager baseado no Linux. Além disso, os pipelines FE impõem verificações de estilo de código que não estão presentes em compilações Maven de pilha completa.

Notas

  • Quando o Cloud Manager executa um pipeline de front-end, ele não executa a instalação do npm primeiro. Ele simplesmente pega o package-lock.json que está no Git e executa o npm audit --production --audit-level=critical. No entanto, um pipeline de pilha completa instala as versões de Nó/NPM solicitadas por meio do plug-in front-end maven, ele executa a instalação de npm, portanto, não vemos o problema no pipeline de pilha completa.

Descrição description

Ambiente

  • Produto: AEM as a Cloud Service - Sites
  • Pipeline: pipeline somente de front-end (FE) via Cloud Manager
  • Versão do nó: 14.19.1
  • versão do npm: 6.14.x
  • Sistema operacional para builds locais: Windows (local), Linux (container do Cloud Manager)
  • Permissões necessárias: Função de Gerente de Implantação no Cloud Manager

Problema/Sintomas

  • Falha do pipeline durante a instalação do npm com erros como * fsevents não acessíveis do chokida r*
  • Erros relacionados a arquivos package-lock.json ausentes ou incompatíveis
  • As compilações locais têm êxito no Windows ou no Mac, mas falham no pipeline do Cloud Manager
  • Centenas de erros de ESLint/estilo de código causam falhas de pipeline somente FE, enquanto os pipelines de pilha completa não impõem essas verificações por padrão

Resolução resolution

Tente as seguintes etapas para resolver o problema:

  1. Verifique se package-lock.json existe no módulo ui.frontend e se está confirmado no repositório.

  2. Regenerar package-lock.json e node_modules usando um ambiente Linux (use o Subsistema do Windows para Linux ou Docker). Para reproduzir e resolver problemas de dependência específicos da plataforma para pipelines somente FE, use os seguintes comandos em um 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 execute em um contêiner 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. Atualize dependências desatualizadas, incluindo Jest, Storybook e Webpack.

  4. Use npm audit com sinalizadores de nível de auditoria crítico e de produção para identificar problemas de dependência restantes. Por exemplo: npm audit --production --audit-level=critical

  5. Confirme o arquivo package-lock.json regenerado do ambiente Linux para o repositório.

  6. Enviar alterações para a ramificação usada pelo pipeline somente FE.

  7. Execute novamente o pipeline somente FE no Cloud Manager.

  8. Solucionar qualquer erro de ESLint/estilo de código relatado durante o processo de criação; todos os erros de lint devem ser resolvidos para que a implantação seja bem-sucedida.

  9. Se necessário somente para fins de validação, remova temporariamente a lista do script de compilação em package.json. No entanto, isso não é recomendado para uso de produção.

  10. Verifique se a etapa de criação foi concluída com êxito sem dependências ou erros de lista.

  11. Se a implantação for bem-sucedida, mas os estilos e scripts do site não forem carregados, verifique as configurações do Dispatcher e a configuração do CDN. Certifique-se de que o vhost habilitado inclua o ServerAlias correto para o domínio estático. Para ver as etapas, consulte A implantação do pipeline de front-end interrompe o site.

  12. Se o pipeline falhar com BUILD_NPM_AUDIT_ERROR, remova todos os nós SiteConfig ou HtmlPageItemsConfig conflitantes. Para obter as etapas, consulte Como resolver BUILD_NPM_AUDIT_ERROR no pipeline de front-end do AEM as a Cloud Service.

Notas

  • O pipeline somente FE impõe verificações de estilo de código mais rigorosas do que builds Maven de pilha completa; todos os erros de lint devem ser resolvidos antes da implantação.

  • Você pode automatizar o processo de correção de erros de listagem de JavaScript e CSS adicionando o seguinte script ao package.json:

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

Isso permite que você execute o npm run lint:fix para corrigir automaticamente muitos problemas de listas antes de enviar alterações por push.

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