Skip to content
Latchkey

O Que É um Build Matrix?

Um build matrix produz um build separado para cada combinação de plataformas, versões ou configurações que você quer entregar.

Quando um software precisa rodar em muitos alvos - vários SOs, arquiteturas ou versões de runtime - você precisa de um build por alvo. Um build matrix declara as dimensões de alvo uma vez e o CI gera um job de build para cada combinação.

Build matrix vs test matrix

Um test matrix verifica o comportamento em combinações; um build matrix produz artifacts entregáveis para cada uma. Eles usam o mesmo mecanismo de matrix, mas um build matrix geralmente faz upload de um artifact por célula para release.

Um pequeno exemplo

Um matrix de os: [linux, macos, windows] e arch: [x64, arm64] gera seis builds, cada um produzindo um binário específico da plataforma que você então publica como app-linux-arm64, app-macos-x64 e assim por diante.

Nomeando artifacts por célula

Cada célula deve fazer upload com um nome único derivado de seus valores de matrix; caso contrário, o segundo upload sobrescreve o primeiro. Codificar o OS e a arch no nome do artifact mantém a saída de cada alvo distinta.

Mantendo gerenciável

  • Descarte células impossíveis ou desnecessárias com exclude.
  • Faça cache por alvo para que cada célula ainda se beneficie de builds incrementais.
  • Limite as dimensões aos alvos que você realmente entrega.

Alternativa de cross-compilation

Às vezes você pode fazer cross-compile de todos os alvos a partir de um único runner em vez de um matrix de runners nativos. Isso troca a amplitude do matrix por um toolchain mais complexo - útil quando runners nativos para uma plataforma são escassos ou lentos.

Principais conclusões

  • Um build matrix produz um artifact por combinação de alvo.
  • Ele usa o mesmo mecanismo de um test matrix, mas emite entregáveis.
  • Nomeie os artifacts de forma única por célula para que os uploads não se sobrescrevam.

Guias relacionados