В современной разработке программного обеспечения непрерывная интеграция (Continuous Integration, CI) является важнейшей практикой, при которой разработчики часто объединяют свои изменения кода в центральный репозиторий. Для проверки этих изменений автоматически запускаются сборки и тесты.
GitHub Actions — это популярная платформа CI/CD, которая позволяет автоматизировать конвейер сборки, тестирования и развертывания непосредственно в GitHub.
В этой лабораторной работе вы научитесь создавать базовый рабочий процесс (workflow) GitHub Actions для проекта Node.js. Вы определите шаги для настройки среды Node.js, установки зависимостей и запуска тестов. Наконец, вы зафиксируете (commit) и отправите (push) эти изменения в свой репозиторий GitHub.
Эта лабораторная работа основана на репозитории, который вы создали в предыдущих лабораторных работах. Вы клонируете репозиторий github-actions-demo и создадите рабочий процесс CI для проекта Node.js.
К концу этой лабораторной работы вы поймете структуру файла рабочего процесса .yml и научитесь настраивать основные шаги CI.
Добавление настройки Node.js с помощью uses actions/setup-node@v4
На этом шаге вы клонируете репозиторий и создадите файл рабочего процесса (workflow file) с настройкой среды Node.js. Рабочие процессы GitHub Actions определяются в YAML-файлах, расположенных в директории .github/workflows вашего репозитория.
На странице вашего репозитория 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
Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo
Создайте новый файл с именем node-ci.yml внутри директории .github/workflows:
touch .github/workflows/node-ci.yml
Откройте .github/workflows/node-ci.yml в WebIDE и начните с добавления имени рабочего процесса и триггера:
name: Node.js CI
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: Node.js CI
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: Имя вашего рабочего процесса.
on: [push]: Запускает рабочий процесс при каждом push кода в репозиторий.
jobs: Группирует все задачи, выполняемые в рабочем процессе.
runs-on: ubuntu-latest: Настраивает выполнение задания на виртуальной машине, размещенной GitHub, с использованием последней версии Ubuntu.
steps: Последовательность задач.
uses: actions/checkout@v4: Выполняет checkout вашего репозитория, чтобы рабочий процесс мог получить к нему доступ.
uses: actions/setup-node@v4: Это официальное действие (action) для установки Node.js на раннере. Мы указываем версию '20'.
Добавление шага для установки зависимостей с помощью run npm install
Теперь, когда среда настроена с Node.js, следующим логичным шагом в конвейере CI (Continuous Integration) является установка зависимостей проекта. Это гарантирует, что все внешние библиотеки, необходимые вашему приложению, будут доступны до начала сборки или тестирования.
Снова откройте файл .github/workflows/node-ci.yml и добавьте шаг для установки зависимостей.
Добавьте следующие строки в конец секции steps (убедитесь, что сохранена правильная отступы):
- name: Install dependencies
run: npm install
Ваш полный файл .github/workflows/node-ci.yml теперь должен выглядеть следующим образом:
name: Node.js CI
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
Объяснение
run: npm install: Эта команда выполняет npm install в оболочке (shell) раннера. Она считывает файл package.json (который мы создадим позже) и устанавливает перечисленные зависимости.
Добавление шага для запуска тестов с помощью run npm test
После установки зависимостей, самой важной частью непрерывной интеграции (Continuous Integration) является запуск автоматизированных тестов. Это гарантирует, что новые изменения не нарушат существующую функциональность.
Откройте файл .github/workflows/node-ci.yml и добавьте шаг для запуска тестов.
Добавьте следующие строки в конец секции steps:
- name: Run tests
run: npm test
Ваш итоговый файл .github/workflows/node-ci.yml должен выглядеть следующим образом:
name: Node.js CI
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: Run tests
run: npm test
Объяснение
run: npm test: Эта команда выполняет скрипт тестирования, определенный в вашем файле package.json. Если тесты завершатся неудачно (вернут ненулевой код выхода), рабочий процесс GitHub Action будет помечен как неудачный.
Создание файла package.json и простого тестового файла
Чтобы созданный нами рабочий процесс (workflow) заработал, нам нужна структура проекта Node.js. В частности, npm install требует наличия файла package.json, а npm test требует определения скрипта для тестирования.
Убедитесь, что вы находитесь в корневом каталоге репозитория:
cd ~/project/github-actions-demo
Создайте файл package.json в корне репозитория:
touch package.json
Откройте package.json и добавьте следующее содержимое. Это определяет базовый проект и простой тестовый скрипт, который всегда проходит (завершается с кодом 0).
Теперь у вас есть минимальный проект Node.js, который удовлетворяет требованиям определенного нами рабочего процесса:
npm install будет выполнен (даже если зависимостей нет, он проверит package.json).
npm test выполнит команду echo "Running tests..." && exit 0.
Зафиксировать (commit), отправить (push) и проверить сборку/тестирование в выполнении рабочего процесса
Теперь, когда мы создали определение рабочего процесса (workflow definition) и файлы проекта, нам нужно зафиксировать (commit) и отправить (push) их в GitHub. Отправка этих коммитов запустит выполнение шагов, которые мы определили, на раннере (runner) Action.
Убедитесь, что вы находитесь в каталоге репозитория:
cd ~/project/github-actions-demo
Проверьте статус вашего репозитория:
git status
Добавьте все файлы в область проиндексированных изменений (staging area):
git add .
Зафиксируйте изменения с описательным сообщением:
git commit -m "Add Node.js CI workflow and project files"
Отправьте изменения в удаленный репозиторий на GitHub:
git push
Примечание об аутентификации:
Когда вы выполните git push, WebIDE автоматически предложит вам пройти аутентификацию. Следуйте этим подробным шагам:
Появится всплывающее окно с сообщением: "The extension 'GitHub' wants to sign in using GitHub." Нажмите Allow.
Появится новое уведомление. Нажмите "Copy&Continue to GitHub", затем нажмите "Open" в следующем запросе.
Войдите в свою учетную запись GitHub в открывшемся окне браузера и введите скопированный код авторизации. После подтверждения авторизации страница закроется автоматически.
Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию отправки (push).
Примечание о конфиденциальности: WebIDE запросит полный доступ к вашей учетной записи GitHub для целей аутентификации. Вам не нужно беспокоиться о проблемах конфиденциальности — виртуальная машина LabEx будет немедленно уничтожена после завершения текущей лабораторной работы, и ваши учетные данные и информация об авторизации не будут сохранены.
Проверка выполнения рабочего процесса
Посетите свой репозиторий на GitHub в веб-браузере: https://github.com/your-username/github-actions-demo
Нажмите на вкладку Actions в верхней части страницы репозитория.
Вы должны увидеть в списке запущенный рабочий процесс, вероятно, с названием "Add Node.js CI workflow and project files" или "Node.js CI".
Примечание: При отправке кода могут быть запущены несколько Actions, если в вашем репозитории несколько файлов рабочих процессов. Пожалуйста, определите правильное выполнение рабочего процесса, проверив имя рабочего процесса на боковой панели слева или используя список выполнений рабочих процессов справа.
Нажмите на заголовок выполнения рабочего процесса, затем нажмите на задание build, чтобы увидеть подробные журналы (logs).
Вы можете развернуть каждый шаг, чтобы увидеть, что произошло:
Checkout code: Показывает, что репозиторий был выгружен (checked out).
Use Node.js: Показывает, что была установлена Node.js v20.
Install dependencies: Показывает, что была выполнена команда npm install.
Run tests: Показывает, что была выполнена команда npm test, и вы должны увидеть вывод Running tests....
Если все шаги завершились успешно, ваш CI workflow работает правильно.
Резюме
В этой лабораторной работе вы успешно создали базовый рабочий процесс непрерывной интеграции (Continuous Integration, CI) с использованием GitHub Actions. Вы узнали, как:
Создать файл рабочего процесса .yml в каталоге .github/workflows.
Настроить рабочий процесс для запуска по событиям push.
Использовать действие (action) actions/setup-node для настройки среды Node.js.
Добавить шаги для установки зависимостей (npm install) и запуска тестов (npm test).
Настроить базовую структуру проекта Node.js для поддержки рабочего процесса.
Эти навыки составляют основу современных практик DevOps, позволяя вам автоматизировать проверку вашего кода при каждом внесении изменений.