React: build infinito na hora do deploy

Olá,

Tenho meu site construído em React hospedado na Umbler há cerca de uns 15 dias. Tudo funcionava normalmente até ontem a noite, quando fiz um push na minha master branch e o deploy não funcionou. Já fiz restart do serviço 3 vezes e o erro persiste: continua na fase de build do react. Já tentei na minha local e não tive problema com o build. Segue print de como fica nos logs do sistema:

Olá bom dia @AlexiaDorneles tudo bem?

Acredito que uma solução então seria então mover o script que builda pra dentro do postinstall e fazer deploy por git remote, poderia fazer este teste e me retornar ? :slight_smile:

Qualquer dúvida estou a disposição.

Bom dia @Francis_Luis!
Ontem eu adicionei alguns scripts de cache verify no postinstall, não tive retorno. Depois de reiniciar o projeto algumas vezes simplesmente funcionou. Não sei dizer o que era o problema mas não aconteceu mais. Obrigada pela tua sugestão e teu tempo! :smiley:

1 Curtida

Meu problema retornou assim que fiz mais uma alteração. Tentei a sua solução e não resolveu. Preciso do site funcionando e simplesmente não funciona. Já não sei mais o que fazer. Toda vez que altero algo no frontend não consigo fazer deploy. Hoje não posso esperar o problema se resolver sozinho

@AlexiaDorneles é na aplicação http://acampamentoolimpiano-com.umbler.net/ ?

http://acampamentoolimpiano-com-br.umbler.net/
Resolvi o problema com o server.js e o build commitado, mas é triste ter que commitar o build, meio que perde as configurações do .env :confused:

@AlexiaDorneles você pode utilizar as variáveis de ambiente via o painel, acredito que resolveria este problema.

Oi @Francis_Luis ,

Para resolver o problema (como eu tinha pressa) passei a commitar o build junto, dispensando o comando de build do lado da Umbler. No entanto não é uma prática que quero manter em meu projeto, dado que as variáveis de ambientes do React acontecem em build-time (ou seja, preciso ficar alterando minhas configurações de ambiente local e expondo isso no git pra resolver um problema que aparentemente não tem relação com o projeto).

O projeto ainda é o mesmo (agora com domínio diferente, encontre no link: http://acampamento-portalpercyjackson-com.umbler.net/ (ou acampamento.portalpercyjackson.com)). No momento está configurado para:

  • Rodar o npm install no prestart
  • Rodar o npm run build no postinstall
  • Rodar o start com o node server conforme tutorial da Umbler

Gostaria de saber se há alguma forma de ter a solução para este build infinito.

Olá @AlexiaDorneles,

Tive um problema similar com o deploy da minha aplicação angular e consegui resolver junto com o pessoal do suporte pelo chat. Mas posso compartilhar algum conhecimento adquirido que talvez ajude.

  1. Se você não está mandando a pasta node_modules a umbler vai fazer o npm install do seu projeto seguindo as dependências do package.json. Logo se esse for o seu caso não é preciso mandar rodar novamente o npm install.
  2. Os scripts que você tem que se preocupar durante o deploy são preinstall, postinstall e start. Onde você provavelmente só deve usar o postinstall e o start assim como eu. O meu ficou assim: https://github.com/nortan-projetos/plataforma/blob/umbler/package.json
    Nota que eu também faço a limpeza das coisas que não uso na minha imagem depois do build para reduzir o tamanho da imagem/espaço consumido na umbler.
  3. Já que toda a mágica ficará no postinstall é interessante também fazer a remoção dos pacotes de desenvolvimento para reduzir o tamanho da imagem.
  4. Por fim e não menos importante, configurar as variáveis de ambiente nas configuração da hospedagem no Umbler.

Caso o problema persista, sugiro entrar em contato com o pessoal do suporte via chat.
Se você também usa integração continua em branchs não diferente do master, sugiro dar uma lida na solução que compartilhei para deploy automático pelo github usando o github workflow: https://community.umbler.com/br/t/deploy-automatico-com-github-workflow-usando-git-remote/2077

Oi Augusto,

Eu segui sua dica de adicionar o build apenas no postinstall e deixar o start rodar normal. No entanto ele não consegue fazer o build antes do start acontecer, parece que o install ainda está em andamento quando a aplicação sobe, os arquivos do build não são atualizados.

Estou usado o deploy por Git Remote, vou entrar em contato com o suporte.

Oi @AlexiaDorneles,

No seu caso é esse o procedimento mesmo. Na época meu problema também estava no npm install de um pacote do angular que precisava dar um input para prosseguir a instalação. No Heroku eles conseguiam resolver isso sem problemas, mas na Umbler temos que tratar esses casos. Para esse pacote em especifico tinha que alterar uns arquivos de configuração do projeto que desabilitava essa entrada de texto.

Para debugar o procedimento de instalação sugiro tentar o deploy com os seguintes scripts:

preinstall: echo '==PREINSTALL==',
install: echo '==INSTALL==',
postinstall: echo '==POSTINSTALL==',

O npm install ocorre com sucesso quando você vê o ==INSTALL== no log do build. Mas no fim você deveria ver os 3. Se você ver os 3 outputs, provavelmente o problema está na hora do build. Aí também é bom ir discutindo esses pontos com o pessoal do suporte e ir dando as dicas de onde pode estar o problema.

Grato pela atenção.