Изменение рабочего процесса для включения матрицы стратегий
Ключевое слово strategy используется для настройки матрицы сборки (build matrix). Мы определим матрицу с единственным ключом node-version.
- На странице вашего репозитория GitHub для
github-actions-demo нажмите зеленую кнопку Code.
- Убедитесь, что выбрана вкладка HTTPS, и скопируйте URL. Он должен выглядеть примерно так:
https://github.com/your-username/github-actions-demo.git.
- Откройте терминал в среде LabEx. Путь по умолчанию —
~/project.
- Используйте команду
git clone для загрузки репозитория. Замените your-username на ваш фактический логин GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Пример вывода:
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.
- Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo
-
Создайте новый файл рабочего процесса (workflow) .github/workflows/matrix-build.yml с помощью редактора WebIDE. Вы можете найти этот файл в проводнике файлов слева в разделе project/github-actions-demo/.github/workflows/.
-
Начните с создания базовой структуры рабочего процесса. Добавьте имя рабочего процесса и триггер:
name: Matrix Build
on: [push]
- Теперь добавьте секцию
jobs с базовой структурой задания сборки:
jobs:
build:
runs-on: ubuntu-latest
- Добавьте стратегию матрицы. Это ключевая часть, которая позволяет запускать задание с несколькими версиями Node.js:
strategy:
matrix:
node-version: [18, 20, 22]
Это определяет переменную матрицы node-version с тремя значениями. GitHub Actions создаст отдельное задание для каждого значения.
- Добавьте секцию
steps. Сначала добавьте шаг для извлечения кода (checkout):
steps:
- uses: actions/checkout@v4
- Добавьте шаг настройки Node.js. Обратите внимание, как мы используем
${{ matrix.node-version }} для обращения к текущему значению матрицы:
- 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
Ваш полный файл теперь должен выглядеть следующим образом:
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
Объяснение
strategy: Определяет стратегию сборки.
matrix: Определяет переменные матрицы.
node-version: Это имя переменной, которое мы выбрали. Мы присвоили ей массив значений [18, 20, 22]. GitHub Actions запустит задание build три раза, по одному разу для каждого значения.
${{ matrix.node-version }}: Этот синтаксис позволяет вам обращаться к текущему значению матрицы в ваших шагах.
Сохраните файл (Ctrl+S или Cmd+S) после внесения изменений.