Привет! Мы — Penguin-team, агентство контекстной рекламы, а это — наш блог по бизнесу, маркетингу и РРС. Каждый месяц мы выпускаем гайды, статьи и инструкции о том, как работать с eCommerce, брендировать, настраивать Google Рекламу и другие каналы трафика.
Наш блог читают маркетологи, SEM-специалисты и предприниматели; его рекомендуют на SEMConf и других конференциях.
Еще больше уникальных материалов — в рассылке 👇 Подписывайтесь!
Получать еще больше уникальных материалов 👉🏻
Спасибо за подписку!
Автозагрузка приложения при помощи Gitlab: готовые решения Penguin-team для небольших компаний
8.03.2019
12 минут
middle
Минимум слов. Максимум дела.
В одном письме в месяц
7-дневный курс по Google Ads (Junior+)
CI/CD — это такая штука, которая часто причиняет боль. А эта статья — это такая штука, которая эту боль поможет снять без регистрации и смс.
По сути, это набор готовых решений, который подойдет для небольших компаний. И если вы обычно не используете некоторые технологии из-за их сложности или громоздкости, этот текст — для вас.
Что такое CI/CD ?
CI/CD — это концепция непрерывной интеграции и доставки. Она реализуется как конвейер, облегчая слияние только что закомиченного кода в основную кодовую базу.
Это основа наших тестирований. Она позволяет запускать различные типы тестов на каждом этапе (выполнение интеграционного аспекта) и завершать их запуском с развертыванием закомиченного кода в фактический продукт, который видят конечные пользователи (выполнение доставки).
CI/CD необходима для разработки программного обеспечения по Agile-методологии, которая рекомендует использовать автоматическое тестирование для быстрой наладки рабочего ПО. Автоматическое тестирование дает заинтересованным лицам доступ к вновь созданным функциям и обеспечивает быструю обратную связь.
Сервисы в помощь
Локальные:
- Gitlab CI,
- TeamCity,
- Bamboo,
- GoCD Jenkins,
- Circle CI.
Облачные:
- BitBucket Pipelines,
- Heroku CI,
- Travis,
- Codeship,
- Buddy CI,
- AWS CodeBuild.
Мы в работе используем Gitlab. У него есть 2000 минут в месяц для использования процесса непрерывной интеграции кода и возможность создавать гибкую структуру проектов, групп и подгрупп для разграничения доступа команд к разным проектам. Эти два преимущества сыграли решающую роль при выборе для нас.
Что нужно для настройки автоматического деплоя приложения в Gitlab? Всего лишь один файл, в котором будет записана конфигурация (скрипт загрузки) — она именуется pipeline. Pipeline — это целый набор разных команд, которые можно выполнить для вашего проекта в рамках одной итерации. Перед стартом работы ознакомьтесь с Gitlab pipeline на официальном сайте компании.
Далее я приведу 2 реальных примера из собственной практики. Они работают на наших проектах — и позволят загружать приложения различной сложности и структуры на сервер вам.
Gitlab pipeline для Angular приложения
Описание pipeline для приложения на Angular
До начала работы важно добавить публичный ключ в аккаунт. Это можно сделать в разделе SSH Keys:
После добавьте переменные окружения, которые нужны в самом проекте. Для этого зайдите в раздел настроек в самом проекте.
Найдите раздел Environment variables.
И добавьте переменные:
Нам нужны:
SSH_HOST_DO – ip-адрес сервера
SSH_PRIVATE_KEY – приватный ключ сервера
SSH_USERNAME_DO – логин (имя) пользователя
И давайте посмотрим на сам pipeline!
Первая секция — переменные, которые я буду использовать локально в этом сценарии:
Так как в моем приложении используется сразу 3 сервера (тестовый, демо-версия и продкашн), мне нужно выполнять загрузку приложения на всех них. В переменных я указываю имя директории поддомена, где располагается приложение.
Переменная OWN_HOST хранит ip-адрес сервера для подключения по SSH.
Далее скрипт выполняет настройку SSH-клиента и добавляет хост в известные, чтобы он мог с ним работать:
Это сделано специально для повышения защиты. Если же по каким-либо причинам вы не можете работать так или машины не совершают соединение, можно отключить проверку хоста. Для этого впишите вот эту команду вместо двух команд выше:
После этого объявите секции, где будут записаны скрипты самой загрузки приложения:
Разберем детально загрузку тестовой версии:
Параметр stage указывает, какой секции принадлежит наша задача. После объявления слова script мы записываем набор действий (операций), которые будут производиться.
На словах логика загрузки такова:
Приложение нужно сбилдить и скопировать на сервер, предварительно удалив старую версию
А если пошагово, то…
1 — Выполняем билд приложения:
2 — Подключаемся по SSH к хосту и удаляем старое приложение:
3 — Выполняем загрузку новой версии:
4 — Загружаем файл htacces:
5 — ОБЯЗАТЕЛЬНО указываем, в какой ветке работает эта задача:
Задачи в других ветках работают по такому же принципу.
Gitlab pipeline для PHP приложения (непопулярные фреймворки)
Процесс подготовки среды не отличается от описанного выше: нужно тоже добавить ключ в аккаунт и создать переменные окружения в самом проекте. Повторно рассматривать это не будем.
А вот как выглядит сценарий:
Описание Gitlab pipeline для PHP приложения
Вся магия загрузки заключается здесь:
Давайте разберем эту часть более детально и распишем скрипт на команды по порядку.
Важно! Такой подход подразумевает, что вы сами должны загрузить на сервер ваше приложение. А точнее, клонировать его с вашего репозитория, так как скрипт занимается выполнением пула изменений к себе из нужной ветки.
Надеемся, что эти два примера помогут вам настроить автоматический деплой приложения быстро и красиво! Ставьте ♥, делитесь с коллегами — и читайте другие статьи по разработке в нашем блоге.
103293
79
11 минут
49451
35
6 минут
43977
42
10 минут
43416
58
8 минут
41605
30
12 минут