Автоматическое обновление веб-приложения .NET в стиле pull - PullRequest
5 голосов
/ 26 июля 2010

У меня есть несколько веб-приложений .net, которые используют одну и ту же cms-подобную среду.Когда я добавляю новую функцию в эту базовую среду, я хочу, чтобы каждое приложение обновлялось с помощью этой функции.Поэтому в основном мне нужно выполнить следующие шаги:

  1. Поместить App_Offline.htm в корень приложения
  2. Копировать файлы, которые были изменены с сервера обновлений
  3. Запустить SQLпри необходимости обновите скрипты
  4. Удалите App_Offline.htm

Я читал о CruiseControl и других инструментах непрерывной интеграции, они имеют функции, очень похожие на те, которые мне нужны.Проблема заключается в том, что они используют обновление в стиле push, так что сервер интеграции создает исходный код, а затем копирует файлы на рабочие серверы.Я не могу использовать этот подход, потому что мои клиенты не могут дать мне доступ к своим производственным серверам.Поэтому мне нужно иметь кнопку «Обновить» в диспетчере IIS или в любом другом месте, чтобы клиент мог щелкнуть по нему и получить данные с сервера обновлений.Кто-нибудь знает, есть ли решение для достижения этой цели?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Я вижу это как подсистему приложения, которая выполняет несколько шагов:

  1. Подпрограмма, которая проверяет последнюю версию приложения
  2. Производит загрузку файла последнего пакета
  3. Распакуйте и скопируйте новые файлы
  4. Вызовите командную строку sql для информирования обо всех отчетах sql
  5. В конце скопируйте все файлы dll в папку bin

ЕстьДругой способ, но это работает безопасно и звучит как шаблон.

Чтобы обновить папку bin из ASP.NET, ваш IIS должен разрешить доступ к папке bin.Таким образом, вы можете настроить безопасность своей среды, создав пользовательский набор разрешений, например:

<IPermission   
class="FileIOPermission"   
version="1"   
Read="$AppDir$"   
Write="$AppDir$"   
Append="$AppDir$"   
PathDiscovery="$AppDir$" /> 

, чтобы вы могли скопировать файлы тренировок в эту специальную папку.

Ссылки

  1. http://msdn.microsoft.com/en-us/library/ff649312.aspx
  2. http://msdn.microsoft.com/en-us/library/ms998341.aspx

пс .: Если вы обнаружите проблемы с папкой bin.Копирование новых версионных файлов в GAC и управление ссылкой на сборку в версии web.config.Звучит хорошо.

0 голосов
/ 23 октября 2011

Подход, который я выбрал, заключался в создании сценария, который извлекает последнюю версию развертывания из git, останавливает IIS, копирует новую версию, запускает IIS. Это очень грубо, но если в вашем git-репозитории будет только последняя развертываемая версия, это сработает.

Я даже настроил кнопку публикации в Visual Studio для копирования в мое локальное хранилище Git. Затем я просто нажимаю на своем компьютере разработчика и запускаю сценарий развертывания на целевых веб-серверах, который извлекает последнюю версию.

Сценарии обновления SQL вашего вопроса интересны. Похоже, вам нужно что-то похожее на миграцию БД в Rails. Это не то, с чем мне пришлось иметь дело, но я укажу вам здесь: http://www.infoq.com/news/2009/01/migrations_dotnet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...