2012-01-10 2 views
2

Мы используем Teamcity, Git и MSBuild для развертывания нашего сайта.Развертывание дополнительных файлов с использованием MSBuild

Наш сайт управляет Sitecore CMS. Он должен находиться в корневом каталоге, а не в виртуальном каталоге.

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

Есть ли лучший способ достичь этого?

ответ

1

Вы можете использовать MSBuild для копирования файлов «поэтапно». Он называется batching. MSBuild сравнивает штамп даты и времени с входными файлами с датой даты вывода, и если некоторые из входов datetime> output datetime, то цель или задача будут выполнены.

+0

Единственная проблема с проверкой штампов даты и времени заключается в том, что если источник сбрасывается до машины, на которой раньше не было развертывания (например, сервер сборки автоматизации). Временные метки могут не указывать на то, что файлы были изменены, поскольку все метки времени будут установлены на текущую дату и время. – SoftwareCarpenter

0

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

Если ваши файлы не были изменены по содержанию, но когда вы вытаскиваете код из исходного элемента управления, а отметка времени файлов устанавливается на текущее время сборки, когда начинается сборка, вы можете посмотрите на применение хэш-кода SHA к вашим развернутым файлам и вашим файлам сборки.

Поскольку хэш-код SHA не смотрит на метки времени, он позволит вам копировать только файлы с изменениями содержимого файла.

Смежные вопросы