0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Aula

Compilações em matriz para vários ambientes

Use estratégias de matriz para executar tarefas em paralelo em várias versões de linguagens, sistemas operacionais ou configurações.

Compilações em matriz para vários ambientes é uma aula grátis de CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CI/CD with GitHub Actions & DevOps Pipelines, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.

O que são compilações em matriz?

Conheça um recurso poderoso do GitHub Actions: as compilações em matriz! Imagine precisar testar seu código em muitos ambientes diferentes, como vários sistemas operacionais ou versões de linguagens de programação.

Em vez de criar um fluxo de trabalho separado para cada combinação, as compilações em matriz permitem definir um conjunto de variáveis, e o GitHub Actions executará automaticamente suas tarefas para todas as combinações possíveis dessas variáveis.

Por que usar compilações em matriz?

As compilações em matriz são extremamente úteis para:

  • Testes multiplataforma: garantir que sua aplicação funcione no Windows, no macOS e no Linux.
  • Compatibilidade com várias versões: testar com diferentes versões de Node.js, Python ou do seu banco de dados.
  • Execução paralela: executar todos esses testes simultaneamente, economizando muito tempo.

Elas ajudam você a alcançar uma cobertura de testes mais ampla com eficiência.

Sintaxe básica de matriz

Você define uma matriz dentro da seção strategy de uma tarefa. Dentro de strategy.matrix, você lista uma ou mais variáveis, cada uma com uma matriz de valores.

O GitHub Actions então cria uma tarefa para cada combinação. Veja como fica:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14, 16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

Exemplo: várias versões de Node.js

No trecho anterior, definimos uma variável node-version com três valores: 14, 16 e 18.

Essa única definição de tarefa acionará três tarefas separadas, cada uma executada em ubuntu-latest, mas usando uma versão diferente de Node.js. Assim, seu projeto funcionará em todas essas versões.

Combinando várias variáveis de matriz

Você não está limitado a apenas uma variável! É possível combinar várias variáveis na sua matriz. Por exemplo, talvez você queira testar diferentes sistemas operacionais com diferentes versões de Node.js.

Basta adicionar mais pares de chave e valor em strategy.matrix. O número total de tarefas será o produto da quantidade de valores de cada variável.

Exemplo: matriz de OS e Node.js

Veja como configurar uma matriz para testar no Ubuntu e no Windows, usando as versões 16 e 18 de Node.js.

Isso criará 2 (OS) * 2 (versões de Node.js) = 4 tarefas separadas.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

Personalizando combinações com 'incluir'

Às vezes, você precisa de combinações específicas que não são abrangidas pelo produto cartesiano padrão ou quer adicionar variáveis extras a determinadas compilações. Use include para adicionar novas entradas à matriz.

Por exemplo, talvez você queira executar um teste adicional apenas no Ubuntu com Node.js 14 ou passar uma variável de ambiente específica para uma determinada combinação de sistema operacional e versão.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
        include:
          - os: ubuntu-latest
            node-version: 14
            test-suite: 'full'

Excluindo combinações específicas

E se você tiver uma combinação que sabidamente falha ou não é relevante para o seu projeto? A palavra-chave exclude permite remover configurações específicas da sua matriz.

Isso ajuda você a evitar execuções desnecessárias de tarefas e a se concentrar nos casos de teste relevantes.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18, 20]
        exclude:
          - os: windows-latest
            node-version: 16

Acessando variáveis da matriz

Nas etapas da sua tarefa, você pode acessar os valores atuais das variáveis da matriz usando a sintaxe ${{ matrix.variable_name }}. Isso é fundamental para configurar ferramentas ou executar comandos específicos de cada combinação da matriz.

Por exemplo, ${{ matrix.os }} define dinamicamente o sistema operacional do executor, e ${{ matrix.node-version }} configura a ação de instalação do Node.js.

Aplicações práticas

As compilações em matriz são poderosas para:

  • Desenvolvimento de bibliotecas: testar com várias versões de uma dependência.
  • Projetos multilíngues: compilar e testar componentes escritos em diferentes linguagens ou compiladores.
  • Compatibilidade entre navegadores: quando a ferramenta usada oferece suporte, testar aplicações web em diferentes navegadores.

Elas simplificam cenários complexos de testes, transformando-os em fluxos de trabalho concisos e fáceis de manter.

Desafio de compilação em matriz

Considere um fluxo de trabalho do GitHub Actions que usa uma estratégia de matriz. A matriz é definida assim:

strategy:
  matrix:
    os: [ubuntu-latest, macos-latest]
    python-version: [3.8, 3.9]
    exclude:
      - os: macos-latest
        python-version: 3.8

Quantas tarefas serão criadas por essa configuração de matriz?

Recapitulação: Compilações em matriz

Ótimo trabalho! Você aprendeu sobre as compilações em matriz do GitHub Actions.

  • Elas permitem executar tarefas para várias combinações de variáveis (OS, versões de linguagens etc.).
  • São definidas usando strategy.matrix dentro de uma tarefa.
  • include adiciona combinações específicas, enquanto exclude as remove.
  • As variáveis são acessadas por meio de ${{ matrix.variable_name }}.

As compilações em matriz são essenciais para realizar testes abrangentes com eficiência em ambientes diversos. Continue praticando para dominá-las!

Perguntas Frequentes

A aula “Compilações em matriz para vários ambientes” é grátis?

Sim — o texto completo de “Compilações em matriz para vários ambientes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CI/CD with GitHub Actions & DevOps Pipelines, atualize para CoddyKit PRO. O curso de CI/CD with GitHub Actions & DevOps Pipelines inclui 4 aulas no total.

O que vou aprender em “Compilações em matriz para vários ambientes”?

Use estratégias de matriz para executar tarefas em paralelo em várias versões de linguagens, sistemas operacionais ou configurações. Você pratica CI/CD with GitHub Actions & DevOps Pipelines com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar CI/CD with GitHub Actions & DevOps Pipelines?

Nenhuma experiência prévia é necessária. CI/CD with GitHub Actions & DevOps Pipelines no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Compilações em matriz para vários ambientes”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de CI/CD with GitHub Actions & DevOps Pipelines?

Sim. Cada aula de CI/CD with GitHub Actions & DevOps Pipelines inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Compilações em matriz para vários ambientes
  2. Armazenamento em cache de dependências para ganhar velocidade
  3. Fluxos de trabalho e ações reutilizáveis
  4. Execução condicional e dependências de tarefas
← Voltar para CI/CD with GitHub Actions & DevOps Pipelines