Compilaciones matriciales para varios entornos
Utilice estrategias de matriz para ejecutar trabajos en paralelo con varias versiones de lenguajes, sistemas operativos o configuraciones.
Compilaciones matriciales para varios entornos es una lección gratuita de CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CI/CD with GitHub Actions & DevOps Pipelines, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Qué son las compilaciones en matriz?
¡Le damos la bienvenida a una potente función de GitHub Actions: las compilaciones en matriz! Imagine que necesita probar su código en muchos entornos diferentes, como varios sistemas operativos o versiones de un lenguaje de programación.
En lugar de crear un flujo de trabajo independiente para cada combinación, las compilaciones en matriz le permiten definir un conjunto de variables, y GitHub Actions ejecutará automáticamente sus trabajos para cada combinación posible de esas variables.
¿Por qué usar compilaciones en matriz?
Las compilaciones en matriz son muy útiles para:
- Pruebas multiplataforma: garantizar que su aplicación funcione en Windows, macOS y Linux.
- Compatibilidad con varias versiones: probar con diferentes versiones de Node.js, Python o su base de datos.
- Ejecución en paralelo: ejecutar todas estas pruebas simultáneamente y ahorrar mucho tiempo.
Le ayudan a lograr una mayor cobertura de pruebas de forma eficiente.
Sintaxis básica de una matriz
Se define una matriz dentro de la sección strategy de un trabajo. Dentro de strategy.matrix, se enumeran una o más variables, cada una con una matriz de valores.
Después, GitHub Actions crea un trabajo para cada combinación. Veamos cómo se representa:
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 testEjemplo: varias versiones de Node.js
En el fragmento anterior, definimos una variable node-version con tres valores: 14, 16 y 18.
Esta definición de un solo trabajo activará tres trabajos independientes, cada uno ejecutándose en ubuntu-latest, pero utilizando una versión diferente de Node.js. Esto garantiza que su proyecto funcione en todas estas versiones.
Combinación de varias variables de matriz
¡No está limitado a una sola variable! Puede combinar varias variables en su matriz. Por ejemplo, puede que quiera probar diferentes sistemas operativos con distintas versiones de Node.js.
Solo tiene que añadir más pares clave-valor en strategy.matrix. El número total de trabajos será el producto del número de valores de cada variable.
Ejemplo: matriz de sistemas operativos y Node.js
Esta es la forma de configurar una matriz para realizar pruebas tanto en Ubuntu como en Windows, con las versiones 16 y 18 de Node.js.
Esto creará 2 (sistemas operativos) * 2 (versiones de Node.js) = 4 trabajos independientes.
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 testPersonalización de combinaciones con «include»
A veces necesita combinaciones específicas que no están incluidas en el producto cartesiano predeterminado, o quiere añadir variables adicionales para determinadas compilaciones. Use include para añadir nuevas entradas a la matriz.
Por ejemplo, puede que quiera ejecutar una prueba adicional solo en Ubuntu con Node.js 14, o pasar una variable de entorno específica a una combinación determinada de sistema operativo y versión.
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'Exclusión de combinaciones específicas
¿Qué ocurre si tiene una combinación que se sabe que falla o que no es relevante para su proyecto? La palabra clave exclude le permite eliminar configuraciones específicas de su matriz.
Esto le ayuda a evitar ejecuciones de trabajos innecesarias y a centrarse en los casos de prueba 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: 16Acceso a las variables de matriz
Dentro de los pasos de su trabajo, puede acceder a los valores actuales de las variables de la matriz mediante la sintaxis ${{ matrix.variable_name }}. Esto es fundamental para configurar herramientas o ejecutar comandos específicos para cada combinación de la matriz.
Por ejemplo, ${{ matrix.os }} establece dinámicamente el sistema operativo del ejecutor, y ${{ matrix.node-version }} configura la acción de instalación de Node.js.
Aplicaciones prácticas
Las compilaciones en matriz son muy útiles para:
- Desarrollo de bibliotecas: realizar pruebas con varias versiones de una dependencia.
- Proyectos multilingües: compilar y probar componentes escritos en diferentes lenguajes o compiladores.
- Compatibilidad entre navegadores: si utiliza una herramienta que lo admite, probar aplicaciones web en diferentes navegadores.
Permiten simplificar escenarios de prueba complejos y convertirlos en flujos de trabajo concisos y fáciles de mantener.
Desafío de compilaciones en matriz
Considere un flujo de trabajo de GitHub Actions que utiliza una estrategia de matriz. La matriz se define de la siguiente manera:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.8, 3.9]
exclude:
- os: macos-latest
python-version: 3.8
¿Cuántos trabajos creará esta configuración de matriz?
Repaso: compilaciones en matriz
¡Excelente trabajo! Ha aprendido sobre las compilaciones en matriz de GitHub Actions.
- Le permiten ejecutar trabajos para varias combinaciones de variables (sistemas operativos, versiones de lenguajes, etc.).
- Se definen mediante
strategy.matrixdentro de un trabajo. includeañade combinaciones específicas, mientras queexcludelas elimina.- Se accede a las variables mediante
${{ matrix.variable_name }}.
Las compilaciones en matriz son esenciales para realizar pruebas eficientes y exhaustivas en diversos entornos. ¡Siga practicando para dominarlas!
Preguntas frecuentes
¿La lección «Compilaciones matriciales para varios entornos» es gratis?
Sí — el texto completo de «Compilaciones matriciales para varios entornos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CI/CD with GitHub Actions & DevOps Pipelines, actualiza a CoddyKit PRO. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Qué aprenderé en «Compilaciones matriciales para varios entornos»?
Utilice estrategias de matriz para ejecutar trabajos en paralelo con varias versiones de lenguajes, sistemas operativos o configuraciones. Practicas CI/CD with GitHub Actions & DevOps Pipelines con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CI/CD with GitHub Actions & DevOps Pipelines?
No se requiere experiencia previa. CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Compilaciones matriciales para varios entornos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CI/CD with GitHub Actions & DevOps Pipelines?
Sí. Cada lección de CI/CD with GitHub Actions & DevOps Pipelines incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Compilaciones matriciales para varios entornos
- Almacenamiento en caché de dependencias para acelerar la ejecución
- Workflows y Actions reutilizables
- Ejecución condicional y dependencias entre jobs