Skip to content
Latchkey

O Que É uma Estratégia de Matrix?

Uma estratégia de matrix executa uma definição de job em muitas combinações de entrada de uma só vez - cada SO vezes cada versão de linguagem, em paralelo.

Muitas vezes você precisa testar o mesmo código sob muitas condições: três versões do Node, dois sistemas operacionais, ambas as arquiteturas. Escrever seis jobs quase idênticos é tedioso. Uma matrix declara as dimensões uma vez e o CI as expande em jobs paralelos para você.

Como uma matrix se expande

Você lista as dimensões e seus valores; o CI gera o produto cartesiano. Uma matrix de os: [ubuntu, windows] e node: [18, 20, 22] se expande em seis jobs - um por combinação - que rodam em paralelo.

Um pequeno exemplo

Uma strategy.matrix com node: [18, 20, 22] executa sua suíte de testes três vezes, uma por versão, cada uma em seu próprio runner. O nome do job mostra o valor (test (20)), então uma falha aponta diretamente para a versão que quebrou.

Includes e excludes

Você pode adicionar combinações pontuais com include ou remover células específicas com exclude, para cobrir as combinações que importam sem testar cada célula de uma grade grande.

Comportamento fail-fast

Por padrão, muitas matrizes são fail-fast: uma célula que falha cancela as demais. Desligar o fail-fast deixa cada célula terminar, então você vê se uma falha é uma combinação instável isolada ou uma regressão ampla em todas elas.

Cuidado com a explosão combinatória

As dimensões se multiplicam. Quatro valores em três dimensões dão 64 jobs - feedback rápido, mas com custo real. Mantenha as matrizes nas combinações que genuinamente diferem em comportamento.

Principais conclusões

  • Uma matrix executa um job no produto cartesiano das dimensões de entrada.
  • include e exclude permitem ajustar quais combinações são executadas.
  • As dimensões se multiplicam rápido - mantenha as matrizes no que realmente importa.

Guias relacionados