Копирование build файлов на все сервера

Повоторив этот код снова и снова, я подумал, что может быть кто-то делает так же самое. Может быть этот код сохранит вам немного времени.

В общем это – типичная задача. Я разрабатываю BizTalk Server приложения и, конечно же, использую великолепный(!) BizTalk Deployment Framework (BTDF) для развертывания, установки приложений. Когда приложение готово для тестирования и, в конце концов, для работы с данными, все файлы приложения надо установить. Обычно BizTalk развернут на нескольких серверах. К примеру это могут быть сервера для разработки, для тестирования, для тестовой работы, для реальной работы (Development, QA, Staging, Production). Иногда этих серверов меньше, иногда больше. Лучший метод – деражать все эти сервера изолированными друг от друга. В моем случае это означает, что фалы приложения хранятся для каждого сервера в отдельной копии. Это также значит, что мне надо эти файлы копировать одновременно в несколько мест.

Хорошим методом также будет сохранить старые файлы на случай отката, если с последней версией что-то не так.

В результате каталоги с файлами будут выглядеть наподобие этого для каждого сервера:

image

Каталог Current folder содержит файлы приложения, которые установленны в настоящее время на сервере. Каталоги с именами [YYYYMMDD_hh_mm_ss] хранят старые версии приложения.

А здесь код:


<!— Copy a new deployment build to all environment and to a Personal share.
  Before this rename a Current folder to the [CurrentDateTimeTime] to save an old build.
  —>
<Target Name=»AfterInstaller» AfterTargets=»Installer»>
  <PropertyGroup>
    <NewBuild>..\Deployment\bin\$(Configuration)</NewBuild>
    <CurrentDateTime>$([System.DateTime]::Now.ToString(«yyyyMMdd_hh_mm_ss»))</CurrentDateTime>
    <Shares>\\fileshares.domain.com\Shares\</Shares>
    <SourceCodeShare>\BizTalk\Deployment\$(ProjectName)</SourceCodeShare>
    <PersonalShare>Z:\Projects\BizTalk\GLD\Samples\Deployment\$(ProjectName)</PersonalShare>
  </PropertyGroup>
  <!— Rename Current shares to the [CurrentDateTime]: —>
  <ItemGroup>
    <EnvironmentName Include=»QA1;ST1;PR1″/>
  </ItemGroup>
  <ItemGroup>
    <CurrentShare Include=»$(Shares)%(EnvironmentName.Identity)$(SourceCodeShare)» />
    <CurrentShare Include=»$(PersonalShare)» />
  </ItemGroup>
  <Exec Condition=»Exists(‘%(CurrentShare.Identity)\Current’)»
         Command=’Rename «%(CurrentShare.Identity)\Current» «$(CurrentDateTime)»‘/>
  <ItemGroup>
    <NewBuildToCopy Include=»$(NewBuild)\**\*.*»>
      <Destination>%(CurrentShare.Identity)</Destination>
    </NewBuildToCopy>
  </ItemGroup>
  <!— Copy the last build to the Current shares: —>
  <Copy Condition=»@(NewBuildToCopy) != »»
        SourceFiles=»@(NewBuildToCopy)»
        DestinationFiles=»@(NewBuildToCopy->’%(Destination)\Current\%(RecursiveDir)%(Filename)%(Extension)’)» />
</Target>
 

Этот Target может быть включен в файл  Deployment.btdfproj, который входит в проект BTDF Deployment. Еще его можно добавить в файл BizTalkDeploymentFramework.targets, который устанавливается как часть BTDF.

Оставьте комментарий

Filed under BizTalk, Code, MSBuild

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s