Частичное резервное копирование с откатом WebDeploy

Я использую WebDeploy и столкнулся с проблемой, которую я не могу обойти. Сначала я изложу свои идеи, а затем расскажу о проблеме, которая у меня возникла.

В настоящее время у нас есть много приложений, работающих в корневом каталоге веб-сайта в IIS. Мы хотим иметь возможность развертывания и отката на уровне приложения, а не на уровне веб-сайта.

Когда мы хотим развернуть приложение, пользователь создаст пакет веб-развертывания в IIS. Затем они развернут это с помощью Web Deploy. В настоящее время, когда WebDeploy запускает приложение, для резервного копирования требуется резервная копия всего веб-сайта (многих приложений). Это хорошо работает для выкатов, но откаты - это то, где у меня проблема. Видите, при откате я не хочу откатить весь сайт. Я только хочу выкатить то, что изменилось во время этого выпуска. Это важно, чтобы не наступать на пальцы других выкатов, которые могут быть в процессе.

Чтобы удовлетворить это требование, я написал код, который, по сути, отличает исходный пакет развертывания от пакета резервного копирования. Если файл присутствовал в начальном пакете развертывания, мы берем этот соответствующий файл в пакете резервного копирования. Когда у нас есть все файлы из резервной копии, соответствующие начальному развертыванию, я копирую из резервной копии systeminfo.xml, parameters.xml и archive.xml и использую все эти файлы для создания нового zip-файла, который я буду называть пакет отката. Теперь пакет отката имеет ту же структуру папок, что и пакет резервной копии, он просто пропускает файлы из резервной копии, которые не были заменены при первоначальном развертывании. Проблема, с которой я сталкиваюсь, заключается в том, что при отправке этого нового пакета отката в API веб-развертывания я не получаю никаких сообщений об ошибках, но файлы на веб-сервере не были заменены файлами отката. После дальнейшего изучения я обнаружил, что API веб-развертывания возвращает объект DeploymentChangeSummary. Этот объект показывает все нули для скопированных байтов, замененных файлов и т. Д. (В основном ничего не было заменено, но веб-развертывание не показывает ошибок). Когда я пропускаю весь файл резервной копии через один и тот же код, файлы на веб-сервере заменяются, а DeploymentChangeSummary показывает скопированные файлы и байты.

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

1 ответ

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

"c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest="manifest.source.xml" -dest:package=websitepackage.zip

В следующем посте рассматриваются этапы создания пакета вручную из командной строки. В этом случае это для веб-сайта ASP.NET, но будет работать с любым сайтом / приложением ASP.NET:

http://www.dotnetcatch.com/2016/06/23/deploy-an-asp-net-website-not-web-application-with-msdeploy/

Другие вопросы по тегам