Ответ 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 может использоваться без существенных проблем. Из моего опыта:
- ограничение резервного копирования: может выполняться только на уровне веб-сайта, а не на уровне веб-приложений.
- время развертывания: довольно мало - копируются фактические файлы + резервное копирование веб-сайта (если настроено) + утилита пула приложений.