Введение
В современной разработке программного обеспечения непрерывная интеграция (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).
{
"name": "github-actions-demo",
"version": "1.0.0",
"description": "Demo project",
"main": "index.js",
"scripts": {
"test": "echo \"Running tests...\" && exit 0"
},
"keywords": [],
"author": "",
"license": "ISC"
}
- Далее, обновим
index.js, чтобы он представлял наш код приложения.
echo "console.log('Hello, GitHub Actions!');" > index.js
Теперь у вас есть минимальный проект 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, позволяя вам автоматизировать проверку вашего кода при каждом внесении изменений.



