/deployment-assistant

Помощник безопасного развертывания с git на боевом сервере.

Primary LanguagePHP

Deployment assistant

Build Status

Помощник безопасного развертывания с git на боевом сервере.

Цель

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

Список возможных состояний, которые может обработать ассистент

Имена удаленной и локальной веток отличаются

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

Local branch and remote branch has different names. Continue?

Если имя ветки передано осозанно, то разработчику следует ответить Y Если же разработчик ошибся с именем – ему следует ответить N, процесс деплоя будет прекращен.

Есть незафиксированные измененения на боевом сервере

В этом случае разработчику будет возвращено сообщение об ошибке развертывания:

Work dir is not clean. Please commit changes

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

Удаленный репозиторий и боевой сервер имеют изменения

В этом случае разработчику будет возвращено сообщение об ошибке развертывания:

The local branch and remote branch are both modified. There is risk of conflicts while deploying.

Please push production changes to remote branch with force parameter, then pull changes locally, then resolve conflicts and try to deploy again.

Данная ситуация может привести к возникновлению конфликтов. Порядок решения:

  • Убедиться, что разработчик имеет на локальном компьютере последнюю версию изменений, которые хочет развернуть на боевом сервере.
  • Вытолкнуть изменения из боевого сервера в удаленный репозиторий с флагом -f (force) затирая изменения разработчика в репозитории
  • Принять изменения с боевого сервера локально и решить конфликты, если они возникли
  • Вытокнуть изменения из локального компьютера в удаленный репозиторий
  • Повторить попытку развертывания

Изменения с боевого сервера не вытолкнуты в удаленный репозиторий

В этом случае разработчику будет возвращено сообщение об ошибке развертывания:

Your local branch is ahead of remote branch. Please push your changes to remote

Разработчик должен вытолкнуть изменения с боевого сервера в удаленный репозиторий и повторить попытку развертывания

Нет изменений для развертывания

В этом случае разработчику будет возвращено сообщение об ошибке развертывания:

There are nothing to pull

Разработчик должен вытолкнуть изменения с локального компьютера в удаленный репозиторий и повторить попытку развертывания

Установка

Помощник является исполняемым phar-архивом. Для установки введите команду:

php -d allow_url_fopen=1 -r "copy('http://dep.worksolutions.ru/dep.phar', 'dep.phar');"
chmod +x ./dep.phar

Phar-архив помощника скачается и сохранится в вашей текущей директории.

Помощник поддерживает версии php от 5.3 до 7.1

Использование

Развертывание

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

Синтаксис команды развертывания:

php -d disable_functions="" ./dep.phar deploy [<remote>] [<branch>]

Для запуска процесса развертывания введите:

php -d disable_functions="" ./dep.phar deploy

По умолчанию изменения вытянутся из удаленной ветки origin/master, чтобы изменить требуется указать из какой ветки удаленного источника нужно вытянуть изменения:

php -d disable_functions="" ./dep.phar deploy origin master

Обновление

Команда обновления проверит есть ли новая версия помощника и, если есть – обновит его.

php -d disable_functions="" ./dep.phar self-update

Внести вклад

Чтобы внести вклад в инструмент – используйте пул-реквесты.