Создание и развертывание веб-приложения с помощью TFS 2015 Build

Мы только что установили TFS 2015 (обновление 1) на месте и пытаемся создать систему Continuous Integration/Build с использованием новой системы TFS Build. Конструкция отлично работает и дает мне зеленый свет, но когда я смотрю сборку по умолчанию, она только построила двоичные файлы из каталога bin, и, похоже, нет простого способа развернуть приложение на локальном сервере на локальном сервере.

Есть два варианта развертывания для копии файловой системы и powershell script, и было бы достаточно легко использовать их для копирования файлов на новый сервер, но поскольку сборка создала только двоичные файлы, t см. инструмент для сбора веб-артефактов (cshtml, images, scripts, css и т.д.) для этого.

После исчерпывающего поиска Google я нашел только одну статью, в которой говорится об этом:

http://www.deliveron.com/blog/building-websites-team-foundation-build-2015/

Однако это использует WebDeploy и создает довольно грязный пакет развертывания.

Как я могу развернуть сайт (стандартное веб-приложение MVC, на самом деле мои тесты используют стандартный шаблонный сайт, созданный мастером проекта проекта) с артефактами на локальном сервере самым простым способом? Я не хочу устанавливать WebDeploy на серверы и предпочитаю использовать PowerShell или что-то другое для развертывания финальных артефактов.

Строка - это всего лишь стандартный шаблон сборки Visual Studio с 4 шагами (сборка, тестирование, индексирование и публикация, публикация сборных артефактов).

Ответы

Ответ 1

Мы используем шаг "Visual Studio Build", а в качестве аргументов для MSBuild мы используем следующую строку:

/p:DeployOnBuild=True /p:PublishProfile=$(DeploymentConfiguration)

Вкладка "Переменные" Должна быть настроена настройка развертывания. Это должно быть Имя опубликованного профиля (имя файла pubxml). Если имя файла - Build.pubxml, то опубликованный профиль - Build.

например:

/p:DeployOnBuild=True /p:PublishProfile=Build

Ответ 2

Я хотел добавить, что Ben Day имеет отличную рецензию, которая быстро помогла нам упаковать пакет, а затем выпустила несколько сред через диспетчер версий..

Его аргументы msbuild выглядят следующим образом:

/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=$(build.artifactstagingdirectory)\for-deploy\website

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

Мы сохраняем файлы web.env.config вместе с папкой для развертывания, а затем используем преобразования xdt в процессе выпуска, чтобы все обновлялось в зависимости от того, в какой среде мы развертываем. Он хорошо работает для всех наших веб-проектов.

Ответ 3

Мы используем WebDeploy/MSDeploy для 40 приложений и любим его. Мы устанавливаем WebDeploy на всех наших серверах, чтобы мы могли развертывать более легко, но вы также можете использовать функцию Web Deploy On Demand, которая не требует WebDeploy быть предварительно установленным.