Введение
В конвейере непрерывной интеграции (CI) одна задача часто создает файлы (например, скомпилированные бинарные файлы, сборки webpack или отчеты о тестировании), которые вы хотите сохранить или передать другим задачам. Эти файлы называются артефактами (artifacts).
По умолчанию файлы, созданные во время выполнения рабочего процесса (workflow run), теряются после его завершения. Чтобы сохранить их, вам необходимо "загрузить" их в качестве артефактов.
В этой лабораторной работе вы модифицируете свой рабочий процесс Node.js, чтобы имитировать процесс сборки, который создает каталог dist, а затем используете действие actions/upload-artifact для сохранения этого каталога.
Эта лабораторная работа основана на репозитории, который вы создали в предыдущих лабораторных работах. Вы будете работать с репозиторием github-actions-demo.
Обновление рабочего процесса для генерации файла сборки
На этом шаге вы измените файл рабочего процесса (workflow file), чтобы имитировать процесс сборки. Вы добавите шаг, который создает директорию dist и фиктивный артефакт (dummy artifact file).
- На странице вашего репозитория 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
Создайте новый файл рабочего процесса
.github/workflows/upload-artifacts.ymlс помощью редактора WebIDE. Вы можете найти этот файл в проводнике файлов слева, в разделеproject/github-actions-demo/.github/workflows/.Начните с создания базовой структуры рабочего процесса. Добавьте имя рабочего процесса и триггер:
name: Upload Artifacts
on: [push]
- Добавьте секцию
jobsи определите заданиеbuildс указанием раннера (runner):
jobs:
build:
runs-on: ubuntu-latest
- Добавьте секцию
steps. Сначала добавьте шаг для извлечения кода (checkout):
steps:
- uses: actions/checkout@v4
- Добавьте шаг настройки Node.js:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- Добавьте шаг для установки зависимостей:
- name: Install dependencies
run: npm install
- Добавьте шаг сборки, который создает директорию
distи файл внутри нее:
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- Добавьте шаг для запуска тестов:
- name: Run tests
run: npm test
Ваш полный файл теперь должен выглядеть следующим образом:
name: Upload Artifacts
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- 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
Объяснение
mkdir dist: Создает директорию с именемdist.echo ... > dist/build.txt: Создает простой текстовый файл внутриdistдля имитации скомпилированного актива (asset).
Сохраните файл (Ctrl+S или Cmd+S) после внесения изменений.
Использование actions/upload-artifact@v4 для загрузки директории dist
Теперь, когда мы создали некоторые файлы, нам нужно их загрузить. Мы будем использовать официальное действие (action) actions/upload-artifact.
- В файле
.github/workflows/upload-artifacts.ymlдобавьте новый шаг в конец задания (job):
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets
path: dist
- Ваш полный файл должен выглядеть примерно так:
name: Upload Artifacts
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- 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
path: dist
Объяснение
uses: actions/upload-artifact@v4: Вызывает действие для обработки загрузки.name: build-assets: Имя артефакта, под которым он будет отображаться в интерфейсе GitHub (UI).path: dist: Каталог (или файл) для загрузки.
Сохраните файл (Ctrl+S или Cmd+S).
Зафиксируйте изменения (commit), отправьте (push) и проверьте артефакт в интерфейсе GitHub
На этом шаге вы закоммитите изменения и отправите их в GitHub. Это запустит рабочий процесс (workflow), который вы только что обновили.
- Убедитесь, что вы находитесь в директории репозитория:
cd ~/project/github-actions-demo
- Добавьте изменения в индекс (Stage the changes):
git add .
- Закоммитьте изменения:
git commit -m "Add build step and upload artifacts"
- Отправьте изменения в удаленный репозиторий на GitHub:
git push
Примечание об аутентификации (Note on Authentication)
Когда вы выполните команду git push, WebIDE автоматически предложит вам пройти аутентификацию. Следуйте этим подробным шагам:
- Появится всплывающее окно с сообщением: "The extension 'GitHub' wants to sign in using GitHub." Нажмите Allow (Разрешить).
- Появится новое уведомление. Нажмите "Copy&Continue to GitHub", а затем "Open" в следующем запросе.
- Войдите в свою учетную запись GitHub в открывшемся окне браузера и введите скопированный код авторизации. После подтверждения авторизации страница автоматически закроется.
- Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию пуша.
Примечание о конфиденциальности (Privacy Note): WebIDE запросит полный доступ к вашей учетной записи GitHub для целей аутентификации. Вам не нужно беспокоиться о проблемах конфиденциальности — виртуальная машина LabEx будет немедленно уничтожена после завершения текущей лабораторной работы, и ваши учетные данные и информация об авторизации не будут сохранены.
Этот процесс аутентификации не требует ручной настройки имени пользователя или Персонального токена доступа (Personal Access Token).
Проверка на GitHub (Verify on GitHub)
- Посетите свой репозиторий на GitHub в веб-браузере.
- Нажмите на вкладку Actions.
- Нажмите на последний запуск рабочего процесса (например, "Add build step and upload artifacts").
- Прокрутите страницу сводки вниз. Вы должны увидеть раздел с названием Artifacts.
- Вы должны увидеть артефакт с именем
build-assets. - Нажмите на него, чтобы скачать. Это будет zip-файл, содержащий
build.txt.

Резюме
В этой лабораторной работе вы узнали, как сохранять данные из запуска рабочего процесса (workflow run) с помощью артефактов. Вы:
- Создали шаг "build" (сборка), который генерировал выходные файлы.
- Использовали
actions/upload-artifactдля сохранения каталогаdist. - Убедились, что артефакт доступен для загрузки в интерфейсе GitHub (UI).
Артефакты необходимы для обмена файлами между заданиями (jobs) (например, из задания сборки в задание развертывания) или для отладки сбоев путем загрузки логов.



