A BlueLabs acelera builds de Monorepo em 4x com o Semaphore
😔 Antes do Semaphore:
- ⛔️️ Builds de 17 minutos
- ⛔️ CI compila todos os projetos no monorepo
- ⛔️ Alto custo de pipelines de CI
😄 Após adotar o Semaphore:
- ✅ Builds de 4 minutos ⬇️ 4x
- ✅ CI compila apenas o que mudou no monorepo
- ✅ Solução econômica
Experimente o Semaphore
O desafio
A equipe de frontend começou a experimentar com um monorepo, enfrentando lançamentos com falhas devido a versões incompatíveis em seu próprio ecossistema. Querendo liberar o máximo de código possível e já experientes em publicar pacotes Node em repositórios privados, decidiram tentar o monorepo.
A primeira coisa que perceberam foi que o processo de build em um monorepo é mais lento. Isso era evidente, pois eles eram os únicos na empresa usando um monorepo, e isso se destacava na visão geral. Portanto, tiveram que destinar algum tempo para otimizar os pipelines, principalmente por meio do cache de dependências e artefatos e utilizando o Docker de forma mais eficiente.
“Agora que usamos condições mais específicas e armazenamos em cache artefatos específicos, a duração média do primeiro pipeline (o mais longo) é de cerca de 4 minutos.”

Pietro Grandi
Líder de Engenharia da Equipe do Cliente na BlueLabs
De modo geral, a BlueLabs precisava que sua nova solução de CI/CD:
- ✔️ Entendesse o que mudou em um monorepo
- ✔️ Mantivesse os tempos de build sob controle
- ✔️ Tivesse uma estratégia imediata para armazenamento de artefatos
- ✔️ Estabelecesse um ciclo de feedback rápido para o código alterado
“O preço e a simplicidade de integração com o GitHub são as principais razões pelas quais escolhemos o Semaphore.”

Pietro Grandi
Líder de Engenharia da Equipe do Cliente na BlueLabs
A solução
O monorepo da BlueLabs possui duas pastas principais: “apps” para aplicativos específicos de marca e “packages” para código compartilhado. O momento de insight veio quando perceberam que executar análise estática e testes apenas em um pacote levava mais tempo do que compilar todos os pacotes de uma vez. Foi então que decidiram adotar uma abordagem diferente: tornar os testes seletivos e manter os builds atômicos.
Essa percepção, combinada com a introdução de uma CI que testa apenas o código alterado, permitiu reduzir o tempo de build em 4x. Abaixo, você pode ver uma captura de tela da última execução, onde apenas uma pequena alteração de UI em um dos pacotes foi feita. Todo o código é compilado para entregar a aplicação, mas os testes e a análise estática são executados apenas onde as atualizações foram feitas.

O segredo
O diferencial foi a adoção de uma nova função chamada change_in
, que calcula as alterações nos commits recentes. Com ela, configurar a execução condicional em um monorepo é apenas uma questão de adicionar uma linha de código no pipeline.
Os resultados
O pipeline aprimorado permitiu que a BlueLabs estabelecesse um ciclo de feedback curto em seu desenvolvimento. As partes que mudaram são mais facilmente visíveis, o processo de build inteiro é mais rápido, e os desenvolvedores não precisam esperar o café esfriar para saber se os testes foram aprovados. A produtividade dos desenvolvedores melhorou e, ao mesmo tempo, a BlueLabs conseguiu reduzir custos em seu CI/CD.
À medida que os desenvolvedores ganhavam mais experiência com monorepos, eles também conseguiram definir condições de mudança mais específicas e otimizar o uso do cache de artefatos. Hoje, a base de código cresceu 30% desde que migraram para o monorepo, e a duração média do pipeline mais longo caiu de 17 para apenas 4 minutos.
“A simplicidade de uso é provavelmente a característica mais importante do Semaphore: é bem rápido conectar a um repositório GitHub e começar a compilar.”

Pietro Grandi
Líder de Engenharia da Equipe do Cliente na BlueLabs
A BlueLabs projeta e implementa plataformas para a indústria de apostas esportivas desde o início. A empresa está atualmente desenvolvendo uma solução completa, que coleta dados e eventos esportivos, aceita e valida apostas, gerencia resultados e pagamentos, e oferece a melhor experiência de usuário possível com a plataforma web.
careers.bluelabs.eu
Setor:
Apostas esportivas
Tamanho da Empresa
11-50 funcionários
Equipe de Engenharia
15 pessoas
Stack
Scala
Golang
Typescript
Resultados reais. Impacto real. 🎯📈