Автоматизировать развертывание веб-приложений?[закрыто]
-
09-06-2019 - |
Вопрос
Моя команда в настоящее время пытается автоматизировать развертывание наших веб-приложений .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.