2008-09-05 3 views
38

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

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

+1

Решение для автоматизации выпуска приложений разработано специально для этого, вы можете найти список известных инструментов здесь: https://en.wikipedia.org/wiki/Application_release_automation – 2016-07-19 15:03:24

ответ

32

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

Эта статья имеет много информации: Integrating MSBuild with CruiseControl.NET

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

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

Тогда когда мы подтвердили, что все готово для перехода на живое/промежуточное занятие, мы запускаем другой сценарий:

  • Запуск миграции на живой/постановка сервера
  • MSDeploy: архив тока/постановка сайта в прямом эфире
  • MSDeploy: сайт синхронизации от сборки жить/постановки

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

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

+0

В чем ваши миграции написаны? Прямой SQL? Также как вы обрабатываете файлы конфигурации? – 2008-09-12 19:30:15

+0

В настоящее время мы используем миграции Ruby. Сценарий сборки вызывает грабли, и все об этом позаботится. Однако мы перемещаем все наши практики на alt.net, поэтому, скорее всего, мы скоро это изменим. Что касается конфигурационных файлов, Cruise Control заменяет конфигурацию dev своей собственной конфигурацией сборки перед компиляцией – 2008-09-15 14:43:55

0

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

+0

Вы предлагаете это как инструмент автоматизации сборки? Я получаю, что SSH отлично подходит для безопасных передач, но как это упрощает развертывание? – BozoJoe 2010-09-07 18:47:34

0

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

3

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

+0

большие пальцы вверх для Visual Build Pro для Kinook – BozoJoe 2010-09-07 18:48:05

3

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

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

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

+0

Puppet для Windows - это то, что я изучаю. MSI-файлы для Windows больше проблем, чем я думаю. MsDeploy содержит семантику для развертывания на серверах IIS (со знаниями о пулах приложений, acls и веб-сайтах/веб-приложениях), поэтому для сопоставления вызовов msdeploy на языке запросов штата куколка было бы самым элегантным решением. – Henrik 2011-01-10 12:09:31

1

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

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

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

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

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

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

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

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

0

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

1

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

Смежные вопросы