Лучшие практики для стратегии развертывания веб-приложений с Gitflow - PullRequest
0 голосов
/ 31 октября 2018

Для развертывания наших веб-приложений мы используем Bitbucket Pipelines в качестве нашей платформы CI / CD. Здесь мы используем самоконтролируемый контейнер Docker для запуска наших сборок и тестов перед отправкой приложения. Сборка означает, что мы используем composer и npm, чтобы создать проект для отгрузки, в дальнейшем мы можем использовать любые другие потребности из-за использования Docker, что приятно. Для развертывания / отправки мы использовали Rsync на последнем шаге нашего конвейера с файлом фильтра развертывания.

- rsync -chrtuv --filter="merge ./.deployfilter" ./ $PROD_USER@$PROD_HOST:$PROD_PATH

Пример фильтров:

- /logs/***
- ***.gitkeep
- .git/***
P /config/***
+ /vendor/***
+ /public_html/***
+ /***

Рядом с этой стратегией развертывания мы используем Gitflow для нашей стратегии Git Flow. При этом мы развернем ветку master, которая объединена с исправлениями или выпусками и помечена для производства. Наши release филиалы развернуты в нашей среде QA, а feature - в нашей локальной тестовой среде.

Некоторые проблемы, с которыми мы сталкиваемся при этой стратегии (особенно в старых проектах):

  • Rsync, синхронизирует все файлы с производством вместо различий между коммитами, например, из-за того, что нет простого способа сравнения файлов в конвейерах
  • Развертывание удаляет папку загрузки, используемую CMS, например
  • Развертывание удаляет другие связанные файлы в месте назначения, неправильно настроив фильтр развертывания
  • Не очень хороший обзор того, что будет развернуто и что развернуто
  • Нет (не часто) гибких откатов
  • Из-за конфликтов слияния или поврежденного проверенного кода производство может быть повреждено
  • Трудно поддерживать фильтр развертывания

Что мы в конечном итоге хотим достичь с помощью нашей стратегии развертывания, так это:

  • Понимание развернутых файлов и готовящихся к развертыванию файлов, + и - файлы
  • Минимальное время простоя при развертывании проекта
  • Минимальное время загрузки развертываемых файлов
  • Простой способ отката развертываний
  • Короче говоря, больше доверия к развертыванию наших приложений.

Какие есть еще лучшие практики, помимо того, что мы уже делаем, чтобы сделать эту стратегию лучше, или она сводится просто к удалению человеческих ошибок, таких как лучшая настройка фильтра развертывания или практики git? Кроме того, мне любопытно, как другие webdevs справляются со своей стратегией развертывания.

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

Спасибо.

...