Развертывание - безопасно ли GIT продвигать живое производство?
В настоящее время я с нетерпением жду возможности работать с пустым git-репозиторием для развертывания на рабочем сервере, у меня есть ловушка "post-receive", которая использует git checkout для обновления рабочей папки. Приложение представляет собой сайт PHP.
На самом деле, я задаюсь вопросом, абсолютно ли безопасно нажимать на рабочий сервер с помощью git, когда кто-то использует веб-приложение, обновляет ли git файл как транзакция, блокируя все файлы обновления, или он работает? по файлам? Возможно ли, чтобы пользователь загружал страницу и имел CSS старого коммита, но PHP нового? (если ему очень не повезло)
TL; DR: Есть ли риск подтолкнуть, пока люди пользуются сайтом?
Извините за мой английский! Спасибо за вашу помощь!
2 ответа
Git просто копирует в файлы.
Вам, вероятно, нужно вручную перезапустить ваш веб-сервер, чтобы подобрать измененные программы php. Будьте осторожны, если вы используете сочетание технологий, некоторые программы будут выбирать измененные файлы немедленно, в то время как другие могут ждать перезагрузки.
В вашем случае вам нужно проверить в файле php.ini параметры opcache.revalidate_freq= и oapache.enable, которые определяют, как часто и как apache ищет измененные исходные файлы.
Для производственного сервера, вероятно, безопаснее отключить их и перезапустить сервер, чтобы получить измененные файлы.
Это полностью зависит от того, что использует файлы, и если файлы открыты, и если какие-либо файлы открыты, в какой-то момент их перечитают.
В некоторых системах вы можете обновить файлы на месте, но они игнорируются, пока приложение и / или служба не будут перезапущены.
В других системах изменение принимается немедленно.
В других системах файлы открыты, и вы не можете их перезаписать.
Короче говоря, это не имеет ничего общего с git и имеет много общего с тем, что использует файлы.
Кроме того, вы должны знать, что происходит между версиями. Если поля изменились между версиями, вам нужно убедиться, что вы можете обрабатывать случаи, когда страница, получающая сообщение формы, будет получать данные, отличные от ожидаемых.
git обновляет файл транзакционным способом, блокируя все файлы обновления
AFAIK, git работает по принципу "файл за файлом", и отката нет, если что-то не получается в том или ином файле.