Что вам нужно, это инструмент построения. В Java, ant и maven - популярный выбор. В мире node.js есть тонна инструментов построения. Эти два, с которыми я знаком, - это ворчать и строить (полное раскрытие: я являюсь хранителем buildr).
Либо инструмент сводится к вам записи файла конфигурации с указанием исходных файлов/каталогов и что вы хотели бы сделать для них, вариантов, минификация, конкатенации, Saas или стилуса компиляции и т.д.
https://github.com/gruntjs/grunt
https://github.com/balupton/buildr.npm
Для процесса развертывания, я рекомендую следующие шаги:
- Чистая проверка вашего веб-сайта или кода приложения из исходного элемента управления (Git или Subversion или еще много чего).
- Запустите команду grunt или buildr, чтобы скомпилировать все ресурсы вашего веб-сайта.
- Загрузите результаты на свой веб-сервер, а затем перезапустите процесс node.js. Много способов сделать это.
Для приложения я бы рекомендовал удалить каталог установки в удаленной системе и SCP, чтобы новая версия появилась на своем месте. Это предполагает наличие балансировщика нагрузки.
В зависимости от вашего приложения это может быть достаточно простым, чтобы создать сценарий оболочки или использовать инструмент, например, capistrano или флот.
https://github.com/capistrano/capistrano
https://github.com/substack/fleet
Для простого веб-сайта, я рекомендую то, что выглядит в файле различий, как Rsync. Я использую rsync для своего личного веб-сайта, поскольку это просто статический контент, и мне не нужно беспокоиться о зависимостях и т. Д.
Так релиз может пойти что-то вроде
$ git clone git://github.com/whatever.git && (cd whatever && buildr && rsync -avz --delete -e ssh <remote server>:webroot)
Или приложение, немного более автоматизирован:
$ git clone git://github.com/whatever.git && (cd whatever && buildr && make upload)
Для основного приложения:
$ buildApp && deployApp
С buildApp и deployApp - это скрипты, которые содержат все команды, протоколирование, настройку и т. д., необходимые для сборки и развертывания.
[Fabric] (http://www.fabfile.org/) следует упомянуть в этом контексте. Более или менее в той же категории с Capistrano, люди, более удобные с Python, чем Ruby, могут найти это отличным инструментом. Несмотря на некоторое совпадение с инструментами DevOps, такими как SaltStack, Ansible, Chef или Puppet, эти инструменты более ориентированы на настройку сервера/среды, в то время как Fabric более подходит для развертывания. Функциональность Fabric может быть дополнена [Cuisine] (https://github.com/sebastien/cuisine). Y Combinator Hacker News [thread] (http://bit.ly/1psLMB0) содержит хорошие комментарии о Fabric и т. Д. – Ville
Спасибо! Я посмотрю на Ткань. – Brandon