Статьи

Как создать и развернуть веб-приложение с друзьями

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

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

В этом руководстве я покажу вам, как вы можете использовать Buddy для создания, тестирования и развертывания приложения Node.js.

Чтобы иметь возможность следовать, на вашем сервере разработки должно быть установлено следующее:

  • Node.js 10.16.3 или выше
  • MongoDB 4.0.10 или выше
  • Git 2.7.4 или выше

Конечно, прежде чем погрузиться в Buddy, вам понадобится веб-приложение, которое вы можете создать и развернуть. Если у вас уже есть, не стесняйтесь перейти к следующему шагу.

Если у вас нет приложения Node.js, с которым вы можете поэкспериментировать, вы можете быстро создать его с помощью начального шаблона. Хорошим вариантом является использование популярного начального шаблона Hackathon, поскольку он обладает всеми характеристиками типичного приложения Node.js.

Создайте шаблон на GitHub и используйте git чтобы загрузить его в свою среду разработки.

1
git clone https://github.com/hathi11/hackathon-starter.git

Стоит отметить, что Buddy используется с Git-репозиторием. Он поддерживает репозитории, размещенные на GitHub, BitBucket и других таких популярных хостах Git. У Buddy также есть встроенное решение для Git-хостинга, или вы можете так же легко использовать Buddy со своими собственными Git-серверами.

После завершения клонирования используйте npm чтобы установить все зависимости веб-приложения.

1
2
cd hackathon-starter/
npm install

На этом этапе вы можете запустить приложение локально и исследовать его с помощью браузера.

1
node app.js

Вот как выглядит веб-приложение:

Хакатон стартовый шаблон

Если у вас еще нет аккаунта Buddy , сейчас самое время его создать. Buddy предлагает два уровня премиум и бесплатный уровень, все из которых основаны на облаке. Свободного уровня, который дает вам 1 ГБ оперативной памяти и 2 виртуальных процессора, пока будет достаточно.

После входа в учетную запись Buddy нажмите кнопку « Создать новый проект» , чтобы начать.

Домашняя страница друзей

Когда будет предложено выбрать хостинг-провайдера Git, выберите GitHub и предоставьте Buddy доступ к своим репозиториям GitHub.

Предоставление Бадди доступа к GitHub

Теперь вы сможете видеть все свои репозитории GitHub на Buddy. Нажмите на репозиторий hackathon-starter, чтобы начать создавать для него автоматизацию.

Автоматизация шаблона хакатона-стартера

Обратите внимание, что Buddy автоматически распознает наше приложение Node.js как приложение Express. Это потому, что наш начальный шаблон использует каркас веб-приложения Express.

На Buddy, конвейер — это то, что позволяет вам организовать и выполнить все ваши задачи. Всякий раз, когда вам нужно что-то автоматизировать с Buddy, вы либо создаете для него новый конвейер, либо добавляете его в существующий конвейер.

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

Создание конвейера

Следующим шагом является добавление действий в ваш конвейер. Чтобы помочь вам начать, Buddy разумно генерирует список действий, которые наиболее актуальны для вашего проекта.

Соответствующие действия

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

1
2
npm install
npm test

Наше веб-приложение использует MongoDB в качестве базы данных. Если при запуске не удается установить соединение с сервером MongoDB, он завершится с ошибкой. Поэтому наш контейнер Docker на Buddy должен иметь доступ к серверу MongoDB.

Buddy позволяет вам легко подключать разнообразные базы данных и другие сервисы к своим контейнерам Docker. Чтобы подключить сервер MongoDB, перейдите на вкладку « Службы » и выберите MongoDB . В показанной ниже форме вы сможете указать такие данные, как имя хоста, порт и версия MongoDB, которую вы предпочитаете.

Настройка службы MongoDB

Запишите введенные данные и нажмите кнопку « Сохранить это действие» .

Затем вы должны настроить веб-приложение для использования URI сервера MongoDB Бадди. Для этого вы можете либо изменить значение поля MONGODB_URI в файле .env.example , либо использовать переменную окружения в Buddy. А пока давайте продолжим с последним вариантом.

Так что переключитесь на вкладку Variables и нажмите кнопку Add a new variable . В появившемся диалоговом окне установите в поле « Ключ» значение MONGODB_URI, а в поле « Значение» — допустимую строку подключения MongoDB, основанную на имени хоста, которое вы выбрали ранее. Затем нажмите кнопку Создать переменную .

Создание переменной среды

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

Наш конвейер уже работает, хотя у него есть только одно действие. Чтобы запустить его, нажмите кнопку « Выполнить конвейер» .

Теперь вы попадете на экран, где вы можете следить за ходом конвейера в режиме реального времени. Кроме того, вы можете нажать любую из   Кнопки журналов (есть одна для каждого действия в конвейере), чтобы более внимательно посмотреть на фактический вывод команд, которые выполняются.

Трубопровод выполняется

Конечно, вы также можете запустить конвейер, отправив коммит в ваш репозиторий GitHub. Я предлагаю вам внести несколько изменений в веб-приложение, например изменить его заголовок, изменив файл views / partials / header.pug , а затем выполнить следующие команды:

1
2
3
git add .
git commit -m «changed the header»
git push origin master

Когда последняя команда завершится, вы сможете увидеть новое выполнение запуска конвейера автоматически.

Когда сборка прошла успешно и все тесты пройдены, вы, как правило, захотите перенести свой код в рабочий процесс. У Buddy есть предопределенные действия, которые помогут вам безопасно передавать файлы в несколько популярных хостинговых решений, таких как Google Cloud Platform, DigitalOcean и Amazon Web Services. Кроме того, если вы предпочитаете использовать свой собственный частный сервер с SFTP или FTP, Buddy также может напрямую использовать эти протоколы.

В этом руководстве мы будем использовать экземпляр Google Compute Engine, который представляет собой виртуальную машину, размещенную в облаке Google, в качестве нашего рабочего сервера. Поэтому переключитесь на вкладку Actions конвейера и нажмите кнопку + , показанную под действием Build and test, чтобы добавить новое действие.

На следующем экране прокрутите вниз до раздела Google Cloud Platform и выберите опцию Compute Engine .

Действия Google Cloud Platform

В появившейся форме вы должны указать IP-адрес вашей виртуальной машины. Кроме того, чтобы разрешить Buddy подключаться к виртуальной машине, необходимо указать имя пользователя и выбрать режим аутентификации.

Самый простой режим аутентификации, на мой взгляд, это ключ SSH Бадди . Когда вы выбираете этот режим, Buddy отображает открытый ключ RSA, который вы можете просто добавить в список авторизованных ключей вашей виртуальной машины.

Форма для ввода учетных данных Cloud VM

Чтобы убедиться, что введенные вами учетные данные действительны, вы можете нажать кнопку « Проверить действие» . Если ошибок нет, вы должны увидеть протокол теста, который выглядит следующим образом:

Тестирование соединения

Затем выберите репозиторий GitHub в качестве источника файлов и используйте поле « Удаленный путь», чтобы указать каталог назначения на виртуальной машине Google Cloud. Кнопка « Обзор» позволяет просматривать файловую систему ВМ и выбирать правильный каталог.

Выбор каталога назначения

Наконец, нажмите кнопку Добавить это действие .

После того, как вы скопировали код на свой рабочий сервер, вы должны снова собрать и установить все его зависимости. Вы также должны перезапустить веб-приложение, чтобы изменения в коде вступили в силу. Для выполнения таких разнообразных задач вам понадобится оболочка. Действие SSH дает вам один, поэтому добавьте его как последнее действие вашего конвейера.

В появившейся форме вы должны снова указать IP-адрес вашей виртуальной машины и учетные данные для входа. Затем вы можете ввести команды, которые хотите запустить. Вот быстрый способ установить зависимости и перезапустить сервер Node.js:

1
2
3
4
5
6
7
pkill -HUP node #stop node server
 
cd my_project
npm install #install dependencies
 
export MONGODB_URI=
nohup node app.js > /dev/null 2>&1 & #start node server

Как показано в приведенном выше коде Bash, необходимо сбросить переменную среды MONGODB_URI . Это делается для того, чтобы ваш производственный сервер подключался к своему собственному экземпляру MongoDB, а не к сервису Buddy MongoDB.

Нажмите кнопку Add this action еще раз, чтобы обновить конвейер.

На этом этапе конвейер выполняет три действия, которые выполняются последовательно. Это должно выглядеть так:

Завершенный трубопровод

Нажмите кнопку « Выполнить конвейер» , чтобы запустить ее. Если ошибок нет, Buddy может понадобиться всего минуту или две для создания, тестирования и развертывания веб-приложения Node.js на виртуальной машине Google Cloud.

Возможность мгновенно публиковать новые функции, исправления ошибок и улучшения в ваших веб-приложениях дает вам определенное преимущество над конкурентами. Из этого руководства вы узнали, как использовать конвейеры Buddy, предопределенные действия и подключаемые сервисы для автоматизации и ускорения выполнения общих задач, таких как создание, тестирование и развертывание приложений Node.js.

Платформа Buddy может многое сделать. Чтобы узнать больше об этом, обратитесь к его обширной документации .