Автоматизировать развертывание веб-приложений?[закрыто]

StackOverflow https://stackoverflow.com/questions/45783

Вопрос

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

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

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

Все наши приложения контролируются с помощью SVN, а наши .Net-приложения используют CruiseControl.Мы пытались использовать сценарии развертывания MSBuild и NAnt, но без особого успеха.В прошлом мы также использовали Capistrano, но хотели бы по возможности избегать использования Ruby.

Существуют ли какие-либо другие инструменты развертывания, которые могли бы нам помочь?

Это было полезно?

Решение

Спасибо всем за ваши добрые предложения.Мы проверили их все, но после тщательного рассмотрения решили создать собственную комбинацию CruiseControl, NAnt, MSBuild и MSDeploy.

В этой статье есть полезная информация:Интеграция MSBuild с CruiseControl.NET

Вот примерно как работает наше решение:

  • Разработчики создают «отладочную» версию приложения и запускают модульные тесты, а затем регистрируются в SVN.
  • CruiseControl видит обновления и вызывает наш скрипт сборки...
    • Запускает любые новые миграции в базе данных сборки.
    • Заменяет файлы конфигурации конфигурацией сервера сборки.
    • Создает «отладочную» конфигурацию приложения.
    • Запускает все модульные и интеграционные тесты
    • Создает конфигурацию развертывания приложения.
      • Устанавливает версии DLL с текущей основной/вспомогательной версией и версией SVN, например.1.2.0.423
      • Перемещает эту новую сборку в папку Release на нашем сервере сборки.
      • Удаляет ненужные файлы
    • При необходимости обновляет IIS на сервере сборки.

Затем, когда мы убедились, что все готово к запуску в эксплуатацию, мы запускаем еще один скрипт, чтобы:

  • Запуск миграции на живом/промежуточном сервере
  • MSDeploy:архивировать текущий концертный/промежуточный сайт
  • MSDeploy:синхронизировать сайт от сборки до запуска/промежуточной реализации

Это было не очень приятно дойти до этой стадии, но сейчас все работает как шарм :D

Я постараюсь обновлять этот ответ по мере того, как мы вносим изменения в наш процесс, поскольку сейчас, похоже, по SA есть несколько похожих вопросов.

Другие советы

я использовал Визуальная сборка Pro В течение многих лет он довольно удобен и прост в использовании и имеет множество встроенных стандартных операций (например, тех, которые вы упомянули).

я использую Кукольный, Makefiles для сборки RPM и Бамбук сделать это для меня.Моя система не применима напрямую, и я не знаком с миром Windows, но есть некоторые переносимые шаблоны.

Моя настройка make позволяет мне создавать RPM для всего (библиотеки PHP, веб-сайты PHP, модули Perl, приложения C и т. д.), из которых состоит мое приложение.Это можно вызвать вручную или через Bamboo.Я переношу эти RPM в репозиторий yum и дескрипторы марионеток, проверяя, что в кластере установлены последние (или правильные) версии программного обеспечения.

Можете ли вы автоматизировать сборку пакетов программного обеспечения в MSI?Я думаю, что Puppet может управлять установкой пакетов и версий программного обеспечения в Windows.

Я использую для этого msdeploy.Он работает идеально.

О Муравейнике;для платформы .NET у нас есть NAnt, и вы можете использовать его в сочетании с MSDeploy;у вас есть возможность вызвать MSDeploy из вашего Nant-скрипта.

Отредактировано:Просто чтобы прояснить ситуацию;вы можете сделать все с помощью msdeploy.Использование Nant не является обязательным.

Вместо использования xcopy нам удалось использовать команду -source:dirpath с UNC-адресами серверов с msdeploy.Ключом был ignoreAcls=true и удаление вызовов имени пользователя и пароля в строке msdeploy:

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

В примере сайт развертывается с диска E нашего сервера сборки на диск D нашего основного сервера.Существуют некоторые соображения безопасности, связанные с предоставлением общих ресурсов или такого уровня доступа к диску на работающем сервере.В настоящее время мы рассматриваем возможность использования общей папки с ограниченным доступом.

Затем мы передаем этот вывод в файл журнала, который затем перемещается в резервный архив для справки.В файле журнала записывается, какие файлы были перемещены и когда. Продолжение приведенного выше примера с помощью команды выходного канала:

... > E:\archive\msdeploy.log

Никто не упомянул Final Builder http://www.finalbuilder.com.Он находится на одном уровне с Visual build Pro.Хороший графический интерфейс для создания средств автоматического развертывания сборки.

Ткань.Кажется маленьким, простым и процедурным.Написан на Python, поскольку Ruby — нет-нет (почему?).

Посмотрите «Фабрику настроек» (от розы индиго).Он довольно прочен в своих возможностях.Он использует API установщика Windows.Вероятно, он сможет сделать то, что вам нужно.

Единственная причина, по которой Nant должен существовать, — это наличие структуры, похожей на Ant, в которой мы можем писать задачи, используя набор языков .NET.Если вы не хотите, чтобы чистый .NET-разработчик писал собственные задачи, я не вижу причин, по которым вы не можете использовать Ant.Тот факт, что вы пишете свое приложение на языке .NET, не означает, что вам нужно использовать инструмент сборки .NET.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top