Подтвердить что ты не робот

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

Моя команда в настоящее время пытается автоматизировать развертывание наших веб-приложений .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, если это возможно.

Есть ли другие инструменты развертывания, которые помогут нам?

4b9b3361

Ответ 1

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

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

Здесь примерно как работает наше решение:

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

Затем, когда мы проверили, все готово для того, чтобы перейти к live/staging, мы запускаем еще один script для:

  • Выполнить миграцию на реальном/промежуточном сервере
  • MSDeploy: архивировать текущий сайт live/stage.
  • MSDeploy: синхронизировать сайт из сборки в live/staging.

На этот этап это было не очень хорошо, но теперь он в основном работает как шарм: D

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

Ответ 2

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

Ответ 3

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

Моя настройка make позволяет мне создавать RPM для всего (php libs, php websites, perl modules, C apps и т.д.), которые составляют мое приложение. Это можно вызвать вручную или через Bamboo. Я передаю эти RPM в yum repo и марионетки, убедившись, что в кластере установлены последние (или правильные) версии программного обеспечения.

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

Ответ 4

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

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

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

Ответ 5

Вместо использования 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

Ответ 6

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

Ответ 7

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

Ответ 8

Проверьте Setup Factory (от индиго розы). Он довольно устойчив в том, что он может сделать. Он использует API-интерфейс установщика Windows. Вероятно, он может делать то, что вам нужно.

Ответ 9

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