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.