Деплой кода через PHPStorm

Представьте ситуацию, вы разрабатываете проект в котором у вас нет возможности или свободных рук чтобы настроить CI/CD (Continuous Integration/Continuous delivery), или вам просто лень т.к. это ваш собственный проект, где вы работаете один. Вы не хотите тратить много времени на написание таких вещей или просто напросто откладываете их.
Решение есть: использовать деплой через PHPStorm. И в этой статье я расскажу что это, как его использовать, настроить, о плюсах и мунусах этого подхода.

.wpj-jtoc.—jtoc-theme-basic-light.—jtoc-has-custom-styles {
—jtoc-numeration-suffix: «. «;
—jtoc-numeration-color: #adadad;
}

Что такое деплой

Деплой он же Deployment — это процесс, доставки новых релизов програмного обеспечения на Production/Dev/QA сервера.
Например, у заказчика есть интернет магазин, он поставил вам задачу — разработать модуль оплаты PayPal, вы реализовали эту функциональность локально, проверили ее, и теперь вам необходимо чтобы эта функциональность появилась на продакшене. Именно доставка новых изменений и есть процесс деплоймента.

Как правило перед деплойментом необходима стадия предподготовки кода который мы хотим выкатить. Туда можно включить следующее шаги:

  • установку npm пакетов
  • установку composer пакетов
  • билд css, js, icons
  • компилирование приложения

Теперь, когда у нас есть базовое представление о деплое, давайте рассмотрим его на примере PHPStorm IDE.

Деплой через PHPStorm

Деплой через PHPStorm представляет из себя процесс когда вы подключаетесь через IDE к удаленному серверу по ssh тунелю, и синхронизируете файлы локального проекта на удаленный сервер, выкатывая тем самым новую функциональность.

Деплой через PHPStorm
Пример деплоя через PHPStorm

Все это возможно благодаря Remote Host Tool в PHPStorm — это FTP/FTPS/SFTP клиент для PHPStorm, который доступн из коробки.
Используя эту функциональность вы можете:

  • синхронизировать файлы между Production/QA/Dev сервером и локальным проектом.
  • залить новые изменения на удаленный сервер.
  • скачивать файлы с удаленного сервера.
  • просматривать файлы с удаленного сервера.
  • удалять, переименовывать, изменять права, файлов для удаленного сервера.

Преимущества

Преимущество этого способа в его дешевизне и простоте, что позволяет со старта, без знаний настройки CI/CD, начать выкатывать релизы приложения. Если вы все еще пользуетесь total commander , SFTP клиентами для доставки ваших ченжей на продакшен — то эта статья для вас.

Основые преимещества:

  • Дешевизна деплоя.
  • Не нужны знания CI/CD.
  • Настройка IDE в течении 5 минут.
  • Хороший и простой интерфейс деплоя.
  • Возможность выбирать что вы деплоите, какие файлы нужно удалить или синхронизировать.
  • Гибкость в выкатках нового функционала — одновременно два разработчика могут деплоить разные модули на продакшен (но нужна согласованность между ними).

Недостатки

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

Опишу возможные проблемы:

  • Из-за того что деплой происходит с пофайловой загрузкой, какие-то файлы с зависимостями от других могут оказаться на сервере раньше других. Не весь функционал будет загружен когда пользователь зайдет на сайт и из-за этого пользователь увидит fatal error на сайте.
  • Если в момент деплоя у вас отрубят интернет, электричество итд — это приведет к тому, что не все данные будут задеплоены и пользователи вашего сайта увидят ошибки.
    Если говорить про e-commerce — то компания может понести многомиллионные убытки.
  • Откат задеплоенных изменений, нужно делать так-же вручную, пофайлово через PHPStorm.
  • Могут возникать сложности при работе в команде, необходимо договариваться, кто какие части деплоит, и всегда выкатывать код из ветки master .
  • Можно забыть закомитить внесенные изменения или не запушить часть закомиченных изменений

Для более-менее серьезных проектов я советую изучить концепцию CI/CD.

Далее рассмотрим функциональность деплоя через PHPStorm.

Для кого подойдет этот способ

Несмотря на недостатки, этот способ имеет ряд преимуществ, который ставит его на первое место для следующей целевой аудитории:

  • Клиенты с фриланса или клиенты у которых просто нет денег на внедрение CI/CD.
  • Разработка собственного блога.
  • Проекты где, перебои для юзеров в 5мин — 10мин во время деплоя не важны.
    Например — это новостные проекты, которые кешируют все страницы сайта fast-cgi кешем.

Реальный пример применения в команде

Знаю команду, которая использовали этот способ деплоя для сайта с 3 разработчиками и 8 миллионной аудиторией в месяц и работали они по такому флоу довольно успешно на протяжении 5 лет.

Теперь давайте перейдем к настройкам нашего PHPStorm.

Настройка

Вначале необходимо добавить новую SSH конфигурацию:

  1. Переходим в PHPStorm Settings > Tools > SSH Configurations .
  2. Жмем на + и добавляем новую конфигурацию.
  3. Заполняем Host, Username и Password поля:
  4. Жмем на кнопку Test Connection чтобы проверить подключение.
  5. Если все успешно, жмем Apply and OK.

Потом когда SSH подключение настроено, переходим к настройке деплоя через PHPStorm:

  1. Переходим в Settings > Build, Execution, Deployment > Deployment .
  2. Жмем на + и создаем новый Deployment.
  3. Заполняем данными:

    SSH configuration — выбираем только что настроенную конфигурацию
    Root path — выбираем путь где располагается код вашего приложения, можно использовать Autodetect кнопку.

  4. Жмем Test Connection и проверяем что соединение установлено корректно.
  5. Переходим на вкладку Mappings

    В Local path — указываем путь до вашего приложение (Говоря о WordPress — где лежит wp-content, wp-includes, index.php).
    В Deployment path — указываем путь от рабочей директории на сервере. Можете нажать на иконку «папки» и посмотреть где код вашего приложения.

  6. Нажимаем Apply and OK.

Теперь вы можете нажать на вкладку Remote Host и просмотреть содержимое удаленного сервера, если вы не знаете как ее найти проследуйте в документациию.

В этом окне вы можете видеть список всех файлов находящихся на удаленном сервере, можете менять права к файлам и директориям, удалять, скачивать исходники себе

деплой чере PHPStorm

Теперь когда мы настроили деплой в PHPStorm, давайте расмотрим как с ним работать.

Работа с деплойментом через PHPStorm

В PHPStorm вам доступно несколько функций деплоя:

  • Sync with Deployed to <your site>
    Синхронизация файлов с удаленным репозиторием, самая важная функция.
    Позволяет вам видеть разницу в файлах между локальным проектом и удаленным сервером и даже позволяет видеть разницу в строках файлов.
  • Upload to <your site>
    Позволяет вам загрузить все файлы директории из локального проекта на удаленный репозиторий.
  • Download from <your site>
    Позволяет вам скачать все файлы из удаленного сервера на локалку.
деплой через PHPStorm

Расмотрим деплой Sync with Deployed to

Предположим вы разрабатывали новый функционал в вашей WP теме, протестировали его и подготовили к релизу.

Для того чтобы выкатить его на сервер:

  • выберите директорию с темой в окне Project и
    нажмите ПКМ -> Deployment -> Sync with Deployed to <your site>
  • какое-то время PHPStorm будет думать сравнивая файлы.
  • вскоре вы увидите следующее диалоговое окно сравнения файлов:
    Деплой через PHPStorm
    На скриншоте вы видите какие файлы были добавлены в проект.

    В колонке * :
    — стрелка указывает что файлы с локалки будут загружены на удаленный сервер.
    — стрелка нам сигнализирует что перечисленные файлы есть на удаленном сервере, но их нет у нас и они могут быть загружены на локальный проект.
    — Файл functions.php уже существует на удаленном сервере, а локально мы добавили новые строки. На скриншоте вы можете видеть diff двух файлов.
    — Если вы несколько раз нажмете на стелку в колонке * , появится иконка, которая будет означать, что файл будет удален во время синхронизации.

  • Отметьте галочками какую синхронизацию данных нужно выполнить
    , если вам не нужны файлы с удаленного сервера, просто уберите стрелку .
  • Нажимаем на Synchronize all и все наши изменения полетят на удаленный сервер:
  • Полоса выполнения процесса «по центру, снизу IDE» будет сигнализировать вам о процессе выполнения деплоя. Это особенно удобно, когда вы деплоите большое количество файлов

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

Заключение

Вы познакомились с тем что такое деплой, рассматрели основые преимущества и недостатки деплоя через PHPStorm, а так-же настройки самой IDE и пошаговый процесс деплоя.
Теперь решать вам, использовать вам этот подход или нет, т.к. он подойдет не каждому проекту из-за существенных недостатков. Но если вы один разработчик или вы работаете в небольшой команде и это не e-commerce, то можете смело его использовать.

WP-yoda на данный момент использует такой подход в силу дешевезны деплоя и отсутствия времени настраивать CI/CD.
Но если у вас команда из 3 и более разработчиков — пробуйте продать клиенту необходимость внедрения CI/CD.

Источник: WP-Yoda.com

Андрей Писаревский

Андрей Писаревский — Backend Team Lead в EPAM. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: frontend, backend, QA, а так же server administration. Использую в работе: PHP, WordPress, Slim Framework, Linux, Docker, Agile.

%d такие блоггеры, как: