Настройка веб-приложения ASP.NET

У нас есть веб-приложение ASP.NET, которое используется двумя способами:

  • корпоративное решение (msi-подобный установщик)
  • облачное решение (используйте тот же установщик)

В настоящее время мы используем самодельный установщик, но рассмотрим, можем ли мы заменить его чем-то более удобным и подходящим для цикла разработки CI/CD.

Какие технологии/продукты могут быть использованы? В настоящее время я думаю о webdeploy, но не знаю, как это можно применить для настройки предприятия...

Ответ 1

Это довольно широкий вопрос, но я думаю, что он заслуживает ответа.

1. (частично) Решение с открытым исходным кодом

Один из способов настройки цикла CI - использовать Jenkins вместе с функциональностью развертывания MS. В этой статье показано, как быстро настроить задание для интеграции Jenkins с помощью инструмента msdeploy.

В основном он настраивает задание для выполнения развертывания с помощью Powershell:

msdeploy.exe -allowUntrusted=true -verb:sync -source:contentpath='D:\WS\ExampleProject' -dest:contentpath=F:\webfolder,computerName=exampleproject.example.com,Username='yourdomain\username',Password='password' -skip:objectName=dirPath,absolutePath="config" -skip:objectName=filePath,absolutePath="web.config"

В нем также указывается, что исполняющий пользователь должен быть администратором на целевом сервере, но это можно обойти с помощью надлежащей конфигурации обработчика веб-развертывания, как указано в this статья.

Один промежуточный шаг, который может быть выполнен до интеграции Jenkins (который я рекомендую), заключается в настройке развертывания в Интернете. Это позволяет быстро проверить, что развертывание может быть выполнено на целевом сервере IIS с помощью Visual Studio и любого настроенного пользователя, которому разрешено развертывать. Это также позволяет быстро увидеть разницу между текущей базой кода (веб-страницы, файлы JS, двоичные файлы) и установленным целевым сервером.

2. Решение DevOps для Visual Studio 2017

Недавно Microsoft выпустила VS 2017, которая содержит отличную поддержку DevOps, которая обрабатывает большинство проблем, связанных с CI/CD. Я не могу найти ссылку, но я помню, что эта функция доступна только для версии Enterprise. Кроме того, хорошая новость заключается в том, что она не подтягивается к технологиям Microsoft.

Презентацию, связанную с предметом, можно найти здесь.

Я думаю, что WebDeploy может использоваться без существенных проблем. Из моего опыта:

  • ограничение резервного копирования: может выполняться только на уровне веб-сайта, а не на уровне веб-приложений.
  • время развертывания: довольно мало - копируются фактические файлы + резервное копирование веб-сайта (если настроено) + утилита пула приложений.

Ответ 2

Недавно я увидел поставщика, предлагающего клиентов, которые хотели, чтобы локальные развертывания использовали тот же образ Docker, который они используют для облачных развертываний. Казалось, что это хорошее, чистое решение.

Другой вариант - пакеты nuget - размещать собственный репозиторий. Затем разверните его с помощью инструмента Octopus Deploy. Я не очень хорошо знаком с этим, но оба решения выглядят легко после начального горба в настройке.