Зачем использовать Rails-подобный механизм развертывания вместо 'git pull' для освобождения? - PullRequest
1 голос
/ 21 апреля 2010

Чтобы освободить мое централизованное веб-приложение, я мог бы указать vhost на какой-то каталог, а затем просто выполнить «git pull», когда хочу выпустить обновление файлов. Но у Rails есть другой механизм развертывания: он копирует файлы в подкаталог, а затем указывает символическую ссылку ('current') на этот новый подкаталог.

Я понимаю, что, вероятно, более приемлемо выполнить развертывание, подобное Rails, потому что релиз построен в некотором каталоге, а затем символическая ссылка указывает на этот каталог, так что это намного быстрее, и менее вероятно, что пользователи будут испытывать странные проблемы во время релиза.

Есть ли другие преимущества в подходе Rails? Или подход «мерзавец» на самом деле более широко принят?

Ответы [ 4 ]

3 голосов
/ 21 апреля 2010

Я заменю «подход Rails» в вашем вопросе на «подход Capistrano».Есть множество преимуществ использования Capistrano.Вы можете развернуть с любого компьютера через SSH.Вы можете cap:rollback мгновенно отменить развертывание, если обнаружите ошибку.Вы можете запустить отложенные миграции в производственной базе данных до того, как произойдет развертывание.Вы можете мгновенно развернуть на несколько машин, если у вас разные машины в разных ролях.После того, как он установлен, выполните cap -T, чтобы увидеть все ваши варианты.

2 голосов
/ 21 апреля 2010

Сначала позвольте мне прояснить Capistrano и SCM (такие как git) не являются взаимоисключающими вариантами. Вам все равно следует использовать какой-либо тип SCM, даже если вы развертываете с использованием capistrano ( или одной из других систем развертывания ruby ​​).

Сказав, что я бы рекомендовал использовать для развертывания какую-то систему SCM, такую ​​как git или mercurial, а не ограничивать ее, если ТОЛЬКО вам придется когда-либо развертываться на чем-либо, кроме Linux. Который я столкнулся. У нас есть требование для развертывания в Linux и Windows, так что capistrano не является хорошим вариантом, более новая версия (> 3) не будет поддерживать windows для каждого официального разработчика (это в группах Google). Но это единственный недостаток использования capistrano по сравнению с ручным использованием git, hg или svn, о котором я могу подумать прямо сейчас. По сути, все, что делают Capistrano и подобные системы, это облегчает вашу жизнь, позволяя вам развертывать приложение в одной / двух командных строках, а не в 10. Это особенно полезно, если вам приходится развертывать на нескольких системах / машинах.

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

2 голосов
/ 21 апреля 2010

Вы описываете поведение Capistrano, которое характерно для проектов Rails, но не является частью самого Rails. Один из вариантов с Capistrano заключается в подключении к вашему удаленному серверу с помощью git, что значительно ускоряет развертывание по сравнению с нажатием tar-шариков.

Одним из основных преимуществ использования cap является то, что вы можете определять хуки, которые выполняют задачи после развертывания, такие как sym-ссылки на общие ресурсы и генерирование файла конфигурации базы данных. Также удобно хранить сведения о развертывании для различных сред в одном месте, а не входить на каждый сервер и выполнять обновления вручную.

1 голос
/ 06 мая 2011

Capistrano также может быть настроен для использования развертывания на основе git - вы по-прежнему получаете радость «cap deploy: rollback», но без всех дополнительных каталогов выпуска (и соответствующего оттока диска):

https://github.com/apinstein/git-deployment

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