Использование app_offline с TFS2015 RM
Я нахожусь в процессе настройки непрерывного развертывания в IIS с использованием TFS 2015 RM и хотел перевести приложение в автономный режим перед развертыванием. После небольшого исследования нашли хорошие посты по достижению этого через файл app_offline.htm со следующими шагами.
- Создание файла "app_offline.htm" в "корне" веб-сайта, но с другим именем (app_offline.htm_), чтобы избежать отладки или связанных с этим проблем.
- Перед развертыванием переименуйте файл обратно в "app_offline" и поместите его в конечное веб-приложение.
- После развертывания мы удаляем файл из целевого веб-приложения.
В настоящее время я включил задачу "Копирование файлов Windows Machine" для копирования двоичных файлов сборки вместе с "app_offline.htm_" в целевое веб-приложение и задачу "Удалить файлы" для ее удаления после развертывания.
Теперь все, что я хочу понять, это как переименовать файл обратно в app_offline.htm перед развертыванием. Помощь по этому вопросу будет принята с благодарностью!
2 ответа
Есть много способов сделать это:
- Использование сценария PowerShell (например, Rename-Item) через PowerShell на целевых машинах (переименование файла на удаленном компьютере) или PowerShell (переименование файла на компьютере агента сборки) шаг / задача
- Разверните веб-приложение с помощью шага / задачи Развертывание веб-приложения WinRM-IIS с опцией " Отключить приложение". (Установите развертывание IIS Web App с помощью расширения WinRM)
- Повторно скопируйте все файлы (включая app_offline.html) на целевой компьютер с помощью параметра " Копирование файлов Windows Machine с чистой целью".
Мне не понравилось ни одно из принятых решений ответа. Главным образом потому, что все они связаныWinRM
для этого требуется, чтобы порты были открыты на сервере, и я просто не хочу разговаривать с специалистом по инфраструктуре, поскольку открытие портов вызывает у него стресс.
Также, если вы используетеclean
вариант наCopy Files task
он оставляет ноль файлов вInetpub
папку буквально на секунду — любые запросы в этот момент выдадут 404 или вообще взорвутся.
я поставил 3Copy Files tasks
функции в моем конвейере сборки.
- Чтобы скопировать файл в папку.
- Сделать оригинальную копию сборки со всеми основными файлами сайта.
- Чтобы скопировать
app_offline.htm
с нулевыми байтами поверх первого.
Затем на сервере работает служба - можно сделатьfilewatcher
или я только что опросил его, но когда этот файл имеет нулевые байты - выбросьте его.
Очень обидно, чтоmsbuild agent.exe
на сервере ничего не может делать, кроме как "копировать файлы"