Как Вы осуществляете "deploy" на "production"?

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

Допустим, Вы работаете с определенным проектом, соответственно у Вас настроено именно под свои нужны «development» окружение (веб-сервер, сервер БД и пр.). Где-то на отдельном сервере (может быть совсем удаленном) работает тот же самый проект, но уже в окружении «production», предназначенный для конечного пользователя. Вы определенно работаете с системой контроля версий (svn, git, etc.). В конкретный момент времени в dev-окружении выполнена определенная задача (зафиксирована стабильная ревизия). И необходимо выполненную работу перенести в «production».

Вопрос в том, какими инструментами Вы пользуетесь.
  • Вопрос задан
  • 5906 просмотров
Пригласить эксперта
Ответы на вопрос 9
@Cepega
Программирую на Рельсах. Для деплоя использую Capistrano. Очень удобно.
Ответ написан
Комментировать
@immaculate
Программист-путешественник
У нас довольно примитивная система. Проект на Django, хранится в mercurial, есть две ветки: staging и production. Все изменения (за исключением совсем срочных багфиксов) по умолчанию идут в staging. При релизе изменения из staging пушатся в production, на сервере самописный shell скрипт выполняет pull и перезапускает сервер. Скрипт запускается вручную.

Еще используется buildout, который управляет всеми зависимостями проекта, два конфигурационных файла. В окружении разработчиков используется конфигурация, в которую включены django-debug-toolbar, в которой определены безопасные умолчания (например, использование песочницы PayPal вместо настоящего аккаунта PayPal, и т.п.). На сервере используется конфигурация без средств отладки.
Ответ написан
Комментировать
mambet
@mambet
maven'ом пользуюсь, там настроены три профиля — dev, staging, production, соответственно, при сборке указывается нужный.
В плане веток и прочего — используется Maven Release Plugin.
Это если очень коротко.
Ответ написан
Комментировать
Shedal
@Shedal
Извините, но совсем непонятно, что вы хотите услышать в ответ на свой вопрос. Ведь средства деплоя очень тесно связаны с платформой, на которой построено приложение, от серверной ОС и от веб-сервера, который используется в продакшене. Для каждой технологии — свои средства.

У нас, к примеру, ASP.NET приложение, для автоматического build'а которого написан NANT-скрипт. Этот скрипт также апдейтит базу данных и деплоит приложение на IIS.
Но какая польза вам от этой информации, если у вас приложение на PHP или Python'е, и все крутится под апачем и линуксом?
Ответ написан
mark_ablov
@mark_ablov
Собственный Java-сервлет, который тупо делает svn up, и еще по мелочи всякое.
Ответ написан
Комментировать
bigdogsru
@bigdogsru
В PHPStorm включаю опцию «After commit upload files to», и при каждом коммите он заливает файлы сам.
Ответ написан
eudj1n
@eudj1n
svn + redmine + hudson + ant

Вот такая комбинация получилась :)

Весь код коммитится в SVN, при этом каждый коммит относится к определенной задаче в Redmine.
По мере тестирования и закрытия задач, с помощью Hudson (Jenkins) и ant-a делается сборка, и накатывается на предпродакт. А оттуда уже, в случае успеха, на продакт. Каждая версия (сборка) содержит diff, с помощью которого можно накатить/откатить патч.

Схема сложная, но она работает. До этого был полный бардак.
Ответ написан
Bambr
@Bambr
Если интересует именно финал — из релизного среза git собирается набор rpm, тестируется, разъезжается по серверам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы