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.jsonque está no Git e executa onpm 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.jsonausentes 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:
-
Verifique se
package-lock.jsonexiste no móduloui.frontende se está confirmado no repositório. -
Regenerar
package-lock.jsonenode_modulesusando 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" -
Atualize dependências desatualizadas, incluindo Jest, Storybook e Webpack.
-
Use
npm auditcom 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 -
Confirme o arquivo
package-lock.jsonregenerado do ambiente Linux para o repositório. -
Enviar alterações para a ramificação usada pelo pipeline somente FE.
-
Execute novamente o pipeline somente FE no Cloud Manager.
-
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.
-
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. -
Verifique se a etapa de criação foi concluída com êxito sem dependências ou erros de lista.
-
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
ServerAliascorreto para o domínio estático. Para ver as etapas, consulte A implantação do pipeline de front-end interrompe o site. -
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.