Как обеспечить программное обеспечение через SVN? - PullRequest
4 голосов
/ 10 марта 2009

Поставка программного обеспечения должна быть быстрой и легкой. Иначе раздражает тратить время на сборку пакетов вручную. Поэтому я хотел бы использовать SVN для доставки моего проекта рельсов в продуктивную среду.

Идея состоит в том, что оперативные парни должны просто проверить начальный проект, выполнив:

svn co https://my-server/vs/my-project/tags/1.0.0

После этого эти парни могут изменить соответствующие файлы для настроек конфигурации в этом локальном рабочем пространстве SVN.

Если доступен новый выпуск программного обеспечения, мы просто распространяем (помимо README) его новый номер версии, например, версию 1.0.1. Чтобы обновить производственную машину, операционная группа просто переключается на соответствующее рабочее пространство, выполнив:

svn switch https://my-server/vs/my-project/tags/1.0.1

(Конечно, перед выполнением обновления работающие серверы должны быть остановлены, а после обновления должны быть выполнены некоторые миграции и т. Д.). Я хочу отметить, что нет необходимости в доставке и извлечении шариков TAR и что предыдущие параметры конфигурации сохраняются или будут объединены с новыми строками конфигурации (хорошо, это может привести к конфликтам, которые необходимо разрешить).

Есть ли (еще) недостатки / ловушки? У вас есть лучший подход с использованием SVN для доставки программного обеспечения?

Заранее спасибо!

Ответы [ 4 ]

4 голосов
/ 10 марта 2009

Одним из недостатков этого подхода, с которым вы, возможно, еще не столкнулись, является то, что этот подход будет утомительным для операций, когда вы масштабируете свое приложение на нескольких серверах. Если вам вдруг понадобятся 4 сервера переднего плана и два сервера базы данных, ваша команда Ops должна будет выполнить ssh на всех четырех машинах, настроить их, а затем настроить машины баз данных.

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

Преимущество использования Capistrano для вашего приложения даже на одном сервере заключается в том, что вы можете извлекать данные из Subversion, настраивать приложение и настраивать базу данных в одном сценарии.

1 голос
/ 10 марта 2009

Проверьте Capistrano для развертывания ваших рельсовых приложений. Легко интегрируется с SVN. Автоматизирует все это. Я обновляю свою стабильную ветку, запускаю команду cap deploy, и все готово.

1 голос
/ 10 марта 2009

Не храните файлы конфигурации в репозитории. Обычно я переименовываю database.yml в database-example.yml и помещаю его в репозиторий.

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

Другой вариант будет capistrano . Вы можете просто нажать-развернуть, когда захотите на их сервер, а не загружать обновления.

0 голосов
/ 27 января 2010

Я согласен с комментариями других пользователей об использовании Capistrano для автоматизации вашего подхода. Это работает очень хорошо. Если вам нужен веб-интерфейс для Capistrano, взгляните на Webistrano . Это приложение Ruby on Rails, которое централизует скрипты Capistrano и обеспечивает ведение журналов, учет и контроль доступа. Все через приятный веб-интерфейс.

Мы используем его для развертывания десятков веб-сайтов на нескольких серверах. Первоначальная настройка требует небольшой работы, поскольку вам необходимо настроить способ запуска приложения Rails (например, через Passenger). Webistrano довольно дружественный к пользователю, и работает хорошо. На данный момент мы развернули более 2300 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...