Нужен совет по моему решению для разработки PHP - PullRequest
2 голосов
/ 10 ноября 2009

Вот как настроено наше текущее решение для разработки php:

Каждый разработчик работает на своей локальной машине. Каждый разработчик передает свое изменение на общий сервер SVN (интрасеть). Хук фиксации загружает изменения на промежуточный сервер и выполняет задачи проверки. Когда продукт будет готов, вручную разверните его на производственном сервере через SFTP.

Примечание. В большинстве случаев, если не во всех случаях, у меня нет SSH-доступа к серверу, только SFTP.

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

Как я могу улучшить это решение?

Спасибо и извините за мой английский.

1 Ответ

4 голосов
/ 10 ноября 2009

Если вы можете настроить производственный сервер для доступа к репозиторию SVN через защищенный канал, такой как https с webdav, возможно, попробуйте следующее:

Создайте сценарий на производственном сервере, который позволит вам ввести каталог тегов и / или номер / дату ревизии и выполнить экспорт SVN. Таким образом, сервер prod извлекает изменения из svn.

Теперь, если у вас есть способ безопасного вызова этого скрипта, скажем, скрипт коммита. Вуаля, у вас есть автоматизация.

Самое главное, вы не хотите, чтобы автоматическое обновление выполнялось на сервере prod, который вы не планировали.

Чтобы решить это:

Скрипт коммита должен вызывать скрипт обновления prod, только когда что-то зафиксировано в "/ path / to / tags / release / dir"

Убедитесь, что только соответствующий персонал по контролю за изменениями (или тот, кто в настоящее время контролирует ручную сборку продуктов) имеет возможность выполнить svn-копирование в этот каталог в репо.

Например, скажем, ваш репо настроен как:

/yourWebsite
--> /branches
--> /trunk
--> /tags
----> /releases

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

svn copy https://mySvnRepo/yourWebSite/trunk \
   https://mySvnRepo/yourWebSite/tags/releases/x.y \
   -m "Tagging for production deployment"

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

Конечно, ваш пробег может отличаться; это только предложение для вашего расследования . Вам следует потратить время на то, чтобы обдумать последствия для безопасности и возможность катастрофы, если она настроена неправильно.

Надеюсь, это поможет, хотя бы только для того, чтобы вы подумали о других решениях.

...