Modificar o fluxo de trabalho para incluir a matriz de estratégia
A palavra-chave strategy é usada para configurar a matriz de compilação (build matrix). Definiremos uma matriz com uma única chave node-version.
- Na página do seu repositório GitHub para
github-actions-demo, clique no botão verde Code.
- Certifique-se de que a aba HTTPS esteja selecionada e copie o URL. Deve ser algo como
https://github.com/your-username/github-actions-demo.git.
- Abra o terminal no ambiente LabEx. O caminho padrão é
~/project.
- Use o comando
git clone para baixar o repositório. Substitua your-username pelo seu nome de usuário real do GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Exemplo de Saída:
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
- Navegue até o repositório clonado:
cd ~/project/github-actions-demo
-
Crie um novo arquivo de workflow .github/workflows/matrix-build.yml usando o editor WebIDE. Você pode encontrar o arquivo no explorador de arquivos à esquerda, em project/github-actions-demo/.github/workflows/.
-
Comece criando a estrutura básica do workflow. Adicione o nome do workflow e o gatilho (trigger):
name: Matrix Build
on: [push]
- Agora adicione a seção de jobs com uma estrutura básica de job de compilação:
jobs:
build:
runs-on: ubuntu-latest
- Adicione a estratégia de matriz (
strategy). Esta é a parte chave que permite executar o job com múltiplas versões do Node.js:
strategy:
matrix:
node-version: [18, 20, 22]
Isso define uma variável de matriz node-version com três valores. O GitHub Actions criará um job separado para cada valor.
- Adicione a seção de passos (
steps). Primeiro, adicione o passo de checkout:
steps:
- uses: actions/checkout@v4
- Adicione o passo de configuração do Node.js. Observe como usamos
${{ matrix.node-version }} para referenciar o valor atual da matriz:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- Adicione o passo para instalar as dependências:
- name: Install dependencies
run: npm install
- Adicione o passo de compilação que cria o diretório de artefato:
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- Adicione o passo de teste:
- name: Run tests
run: npm test
- Finalmente, adicione o passo de upload de artefato. Observe como o nome do artefato inclui a versão da matriz para tornar cada artefato exclusivo:
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Seu arquivo completo deve agora se parecer com isto:
name: Matrix Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- name: Run tests
run: npm test
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Explicação
strategy: Define a estratégia de compilação.
matrix: Define as variáveis da matriz.
node-version: Este é um nome de variável que escolhemos. Atribuímos a ele um array de valores [18, 20, 22]. O GitHub Actions executará o job build três vezes, uma para cada valor.
${{ matrix.node-version }}: Esta sintaxe permite acessar o valor atual da matriz em seus passos.
Salve o arquivo (Ctrl+S ou Cmd+S) após fazer as alterações.