Настройте этот рабочий процесс для автоматического развертывания приложения в рабочей среде и оптимизации процесса выпуска.

Netlify — это платформа веб-хостинга и комплексный набор инструментов для развертывания веб-приложений и управления ими в облаке.

Но его функции выходят далеко за рамки этого — его бессерверные функции позволяют запускать код на стороне сервера без выделенного сервера.

Узнайте, как настроить конвейер CI/CD для развертывания REST API Node.js на Netlify с помощью GitHub Actions.

Конвейеры CI/CD с действиями GitHub: обзор

Конвейеры непрерывной интеграции и непрерывной доставки (CI/CD) — это ряд последовательных автоматизированных процессов, которым подвергаются программные приложения перед отправкой в ​​производство.

Как правило, конвейеры CI/CD состоят из нескольких ключевых фаз, включая фазы исходного кода, сборки, тестирования и развертывания.

Хотя эти этапы можно выполнять вручную, их автоматизация дает ряд преимуществ, в том числе:

  • Сведение к минимуму риска человеческих ошибок.
  • instagram viewer
  • Ускорение процесса выпуска.
  • Обеспечение последовательного рабочего процесса для доставки качественного программного обеспечения в производство.

Что такое действия GitHub?

GitHub Actions — это инструмент, интегрированный в GitHub, который предоставляет широкий спектр готовых действий, которые вы можете использовать для определения рабочих процессов как кода непосредственно в репозитории вашего проекта для автоматизации CI/CD трубопроводы.

Вы также можете создавать настраиваемые действия в соответствии с вашими конкретными потребностями проекта, что позволяет без проблем создавать и развертывать приложения в рабочей среде. Одним из преимуществ GitHub Actions является его бесшовная интеграция с другими функциями GitHub, такими как запросы на вытягивание и отслеживание проблем.

Это позволяет запускать рабочие процессы на основе определенных событий, таких как новая фиксация, что гарантирует автоматический запуск конвейеров CI/CD при необходимости.

Настройка проекта Node.js

Для начала вам необходимо создать веб-сервер Express. Для этого создайте новую папку локально и измените каталог на своем терминале.

mkdir экспресс-netlify
компакт-диск экспресс-netlify

Далее создайте пакет.json файл с использованием npm, диспетчер пакетов узлов.

инициализация npm -y

Наконец, установите зависимости, необходимые в проекте.

npm установить экспресс netlify-лямбда serverless-http

netlify-лямбда package служит локальным сервером разработки, облегчающим тестирование бессерверных функций. бессерверный http помогает адаптировать приложения Express.js к формату, совместимому с бессерверными обработчиками функций.

Netlify не предоставляет встроенной поддержки для хостинга и запуска полноценных серверных приложений. Вместо этого он предлагает бессерверные функции в качестве альтернативного решения для обработки серверной части.

Эти функции управляют логикой на стороне сервера, обрабатывают запросы HTTP API и обслуживают динамический контент, обеспечивая функциональность, подобную серверной, в рамках бессерверной парадигмы.

Вы можете найти код этого проекта в его Репозиторий GitHub.

Создайте экспресс-веб-сервер

Создайте три папки: расстояние, функции, и источник в корневом каталоге папки вашего проекта.

Перед настройкой сервера Express создайте пустой index.html файл в расстояние папка. Этот файл действует как заполнитель, который позволяет Netlify успешно развернуть приложение Express и обслуживать маршруты API.

Теперь создайте источник/app.js файл и добавьте следующий код:

константа экспресс = требовать("выражать");
константа без сервера = требовать("бессерверный-http");

константа приложение = экспресс();
константа роутер = экспресс. Маршрутизатор();

роутер.получить("/", (запрос, разрешение) => {
рес.отправить("Привет, мир!")
});

приложение.использовать(`/.netlify/функции/приложение`, роутер);

модуль.экспорт = приложение;
модуль.exports.handler = без сервера (приложение);

Этот код определяет сервер Express с одним маршрутом для корневого URL-адреса, который обрабатывает запросы GET. app.use Функция регистрирует промежуточное ПО маршрута в приложении Express, гарантируя, что любые HTTP-запросы, сделанные к пути /.netlify/functions/app будет правильно обрабатываться маршрутизатором даже в производственной среде.

Следовательно, если вы добавите новую конечную точку, такую ​​как /api/auth, он будет доступен на /.netlify/functions/app/api/auth. Наконец, код экспортирует приложение Express и функцию бессерверного обработчика.

Это позволяет проводить локальное тестирование сервера и гарантирует, что вы сможете развернуть его как бессерверную функцию в Netlify.

Определите файл Netlify.toml

В корневом каталоге создайте новый Netlify.toml файл и добавьте следующий код.

[строить]
база = "/"
команда = "выполнить сборку npm"
опубликовать = "/расстояние/"
функции = "функции/"
[строить.окружение]
ВЕРСИЯ_УЗЛА = "16"
[функции]
external_node_modules = ["выражать"]
node_bundler = "esbuild"
[[перенаправляет]]
сила = правда
из = "/апи/*"
статус = 200
to = "/.netlify/функции/приложение/:splat"
[[перенаправляет]]
из = "/*"
статус = 200
в = "/index.html"

Код определяет параметры конфигурации сборки и развертывания для приложения Express на Netlify. Он включает в себя такие параметры, как базовый каталог, команда сборки, каталог публикации и каталог функций.

Кроме того, он определяет параметры перенаправления, которые должны управлять маршрутизацией запросов HTTP API, гарантируя, что они должным образом направляются на бессерверные функции Netlify.

Обновите файл Package.json

Открой пакет.json файл и добавьте эти команды в объект скриптов.

"скрипты": {
"начинать": "netlify-лямбда служить src",
"строить": "netlify-лямбда построить src"
},

Выполните следующие команды, чтобы построить и запустить приложение локально.

npm запустить сборку
запуск запуска нпм

Сервер запустится на порту 9000. Вы можете продолжить и протестировать API с помощью Postman, отправив запросы на http://localhost: 9000/.netlify/функции/приложение

Наконец, перед настройкой рабочего процесса GitHub Actions для автоматизации развертываний в Netlify, создать репозиторий на GitHubи отправьте файлы проекта.

Разверните экспресс-приложение на Netlify

Во-первых, разверните API на Netlify перед настройкой рабочего процесса GitHub Actions. Выполните следующие действия, чтобы развернуть приложение Express на Netlify.

  1. Направляйтесь к Нетлайф и создайте учетную запись и войдите в Обзор страница.
  2. Выберите и нажмите на Места вкладка
  3. Нажать на Импорт из Git кнопку и выберите Гитхаб в качестве платформы поставщика Git. Netlify предложит вам пройти аутентификацию в GitHub, чтобы предоставить ему доступ к вашей учетной записи и репозиториям проекта.
  4. Выберите репозиторий проекта Express из списка отображаемых репозиториев.
  5. После выбора репозитория необходимо настроить параметры сборки для процесса развертывания. Netlify упрощает этот процесс, автоматически определяя технологию, используемую для сборки приложения, и предварительно заполняя поля необходимыми настройками сборки. В данном случае команда сборки, публикация и каталог functions.
  6. Наконец, нажмите кнопку Развернуть сайт кнопку для завершения процесса.

Создание рабочего процесса GitHub Actions

Нажать на Действия в репозитории GitHub вашего проекта. в Непрерывная интеграция раздел, выберите и нажмите Настроить Node.js рабочий процесс.

В редакторе GitHub переименуйте имя файла в Netlify.yml, удалите шаблонный код рабочего процесса Node.js и добавьте следующий код:

имя:СтроитьиРазвертыватькНетлайф
на:
толкать:
pull_request:
вакансии:
строить:
пробеги:Убунту-22.04
шаги:
-использует:действия/checkout@v3

# ( Сборка в ./dist или другой каталог... )

-имя:РазвертыватькНетлайф
использует:nwtgck/[email protected]
с:
публикация-директор:'./расстояние'
производственный филиал:основной
github-токен:${{секреты. GITHUB_TOKEN}}
развертывание-сообщение:«Развертывание из действий GitHub»
включить-pull-запрос-комментарий:ЛОЖЬ
включить-коммит-комментарий:истинный
перезаписывает-запрос-комментарий:истинный
среда:
NETLIFY_AUTH_TOKEN:${{секреты. NETLIFY_AUTH_TOKEN}}
NETLIFY_SITE_ID:${{секреты. NETLIFY_SITE_ID}}
таймаут-минуты:1

Вот разбивка свойств рабочего процесса:

  • на: События, запускающие действия в этом рабочем процессе.
  • рабочие места: указывает событие, которое должно выполняться конкретным действием, а именно: события сборки и развертывания.
  • набегает: хост-производственная среда для действия.
  • шаги: определяет последовательность шагов, необходимых для выполнения конкретной работы.
  • с: определяет аргументы, необходимые для правильного выполнения действий.
  • окружение: указывает необходимые переменные среды для рабочего процесса.

Наконец, зафиксируйте обновления, внесенные в этот файл. GitHub должен автоматически запускать рабочий процесс.

Однако первоначальная сборка вызовет ошибку, поскольку вам нужно добавить секретные переменные, необходимые для рабочего процесса: идентификатор развернутого сайта и токен аутентификации Netlify. Отправляйтесь к своему Настройки сайта на Netlify и скопируйте Идентификатор сайта.

Чтобы получить токен авторизации, нажмите кнопку Профиль пользователя значок и выберите Пользовательские настройки вариант из выпадающего окна. На странице настроек выберите Приложенияи нажмите Новый токен доступа для создания токена авторизации.

Добавьте две переменные среды как NETLIFY_SITE_ID и NETLIFY_AUTH_TOKEN как в разделы переменных среды, так и в разделы секретов репозитория в вашем репозитории GitHub. После внесения этих изменений перезапустите рабочий процесс. Netlify автоматически развернет любые последующие изменения, которые вы отправляете, используя этот конвейер.

Идите вперед и протестируйте API с помощью Postman, отправив запросы на этот URL: /.netlify/functions/app.

Настройка конвейеров CI/CD с помощью GitHub Actions и Netlify

Используя бессерверные функции Netlify, вы можете развертывать полноценные веб-приложения, которые охватывают как клиентские, так и серверные функции Netlify.

Кроме того, настройка конвейеров CI/CD для приложений с помощью GitHub Actions предлагает оптимизированный подход к автоматизации процесса сборки и развертывания. Это позволяет вам определять рабочие процессы, которые обеспечивают бесперебойный и надежный процесс разработки, начиная с идеи и заканчивая этапом выпуска.