O Discourse agora publica ativos JavaScript pré-compilados, o que acelerará significativamente a instalação e as atualizações, especialmente para servidores com recursos limitados.
A compilação e otimização de ativos JavaScript sempre foram uma das partes mais intensivas em recursos da execução do Discourse. À medida que nossa base de código e o ecossistema JavaScript evoluíram, esse processo se tornou ainda mais exigente.
Em nossos testes, essas alterações reduzem o tempo de compilação de ativos em um droplet Digital Ocean de 1GB de RAM de 45 minutos para apenas 3 minutos.
Como funciona?
Em cada commit mesclado ao main, um fluxo de trabalho do GitHub Actions compila e agrupa os ativos em arquivos .tar.gz (um para produção, um para desenvolvimento). Esses pacotes são publicados via releases do GitHub em um repositório dedicado. Garantimos que os ativos sejam publicados antes que qualquer commit passe para tests-passed.
Ao compilar seu próprio site, o Discourse agora verifica se há um pacote pré-compilado correspondente e o baixa. Os plugins são então compilados por cima. Se nenhum pacote for encontrado ou houver um erro, o Discourse volta a compilar a partir do código-fonte.
Isso afeta os usuários finais?
Não. Os ativos ainda são servidos aos usuários finais do seu próprio servidor / CDN.
Posso optar por não participar?
Sim! Se você preferir compilar seus próprios ativos e tiver um servidor suficientemente poderoso, defina DISCOURSE_DOWNLOAD_PRE_BUILT_ASSETS: 0 em seu arquivo app.yml.
E se eu estiver executando uma versão bifurcada ou modificada do Discourse?
Os pacotes de ativos são nomeados por hash de commit. Se você estiver executando um fork, nenhum pacote será encontrado e os ativos serão compilados a partir do código-fonte. Se sua cópia do Discourse estiver modificada (ou seja, a árvore de trabalho do git não estiver limpa), o Discourse não tentará baixar um pacote.
E quanto a outras etapas de compilação relacionadas a ativos?
Atualmente, essa otimização se aplica apenas aos ativos JS principais. No futuro, podemos expandi-la para alguns plugins e outras etapas, como compressão gz/brotli.
E quanto ao branch estável?
Os ativos pré-compilados para o branch estável serão publicados a partir da próxima atualização de versão principal, planejada para agosto de 2025.