Modificar el flujo de trabajo para incluir la matriz de estrategia
La palabra clave strategy se utiliza para configurar la matriz de compilación (build matrix). Definiremos una matriz con una única clave node-version.
- En la página de tu repositorio de GitHub para
github-actions-demo, haz clic en el botón verde Code.
- Asegúrate de que la pestaña HTTPS esté seleccionada y copia la URL. Debería verse como
https://github.com/your-username/github-actions-demo.git.
- Abre la terminal en el entorno LabEx. La ruta predeterminada es
~/project.
- Usa el comando
git clone para descargar el repositorio. Reemplaza your-username con tu nombre de usuario real de GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Salida de Ejemplo:
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.
- Navega dentro del repositorio clonado:
cd ~/project/github-actions-demo
-
Crea un nuevo archivo de flujo de trabajo (workflow) .github/workflows/matrix-build.yml usando el editor WebIDE. Puedes encontrar el archivo en el explorador de archivos a la izquierda, bajo project/github-actions-demo/.github/workflows/.
-
Comienza creando la estructura básica del flujo de trabajo. Añade el nombre del flujo de trabajo y el disparador (trigger):
name: Matrix Build
on: [push]
- Ahora añade la sección de trabajos (
jobs) con una estructura básica de trabajo de compilación:
jobs:
build:
runs-on: ubuntu-latest
- Añade la estrategia de matriz. Esta es la parte clave que permite ejecutar el trabajo con múltiples versiones de Node.js:
strategy:
matrix:
node-version: [18, 20, 22]
Esto define una variable de matriz node-version con tres valores. GitHub Actions creará un trabajo separado para cada valor.
- Añade la sección de pasos (
steps). Primero, añade el paso de checkout:
steps:
- uses: actions/checkout@v4
- Añade el paso de configuración de Node.js. Observa cómo usamos
${{ matrix.node-version }} para hacer referencia al valor actual de la matriz:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- Añade el paso para instalar dependencias:
- name: Install dependencies
run: npm install
- Añade el paso de compilación que crea el directorio de artefactos:
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- Añade el paso de prueba:
- name: Run tests
run: npm test
- Finalmente, añade el paso de carga de artefactos (upload artifact). Observa cómo el nombre del artefacto incluye la versión de la matriz para hacer cada artefacto único:
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Tu archivo completo debería verse ahora así:
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
Explicación
strategy: Define la estrategia de compilación.
matrix: Define las variables de la matriz.
node-version: Este es un nombre de variable que elegimos. Le asignamos un array de valores [18, 20, 22]. GitHub Actions ejecutará el trabajo build tres veces, una por cada valor.
${{ matrix.node-version }}: Esta sintaxis te permite acceder al valor actual de la matriz en tus pasos.
Guarda el archivo (Ctrl+S o Cmd+S) después de realizar los cambios.