Остановите teamcity msbuild удаление файлов сервера при публикации - PullRequest
0 голосов
/ 31 октября 2019

Я использую teamcity для создания веб-приложения для нескольких сайтов. Приложение встроено в VS с использованием C # и углового интерфейса. Каждый сайт имеет свой профиль публикации с необходимыми настройками. В профиле публикации для SkipExtraFilesOnServer необходимо установить значение false.

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

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

Я попытался установить для SkipExtraFilesOnServer значение true, и он не удалил файлы, ноэто сломало что-то еще. Человек, который изначально настроил эту конфигурацию сборки, пропал, но недавно я установил для нее значение True, и один из разработчиков обнаружил, что их изменения в Angular (это просто комментирование строки) не были отражены в сборке. Единственным изменением был SkipExtraFilesOnServer, поэтому он вернул значение False и построил заново, и все было хорошо. Вот почему нам нужно установить значение False.

В Teamcity шаг публикации использует MSBuild и имеет следующие параметры командной строки.

/p:DeployOnBuild=true
/p:Configuration=Staging
/p:PublishProfile="login-devtest.sitename.com.pubxml"
/p:PublishProfileRootFolder="C:\Users\Administrator\Desktop\Publish Profiles\sitename Dev Test" /p:UserName="XXXXXX" /p:Password="XXXXXXX"

В профиле публикации у меня есть следующее

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>http://xx.xxx.xxx.xxx</MSDeployServiceURL>
    <DeployIisAppPath>TT_DevTest_Identity</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <UserName>xxxxxxxxx</UserName>
    <_SavePWD>True</_SavePWD>
    <PublishDatabaseSettings>

...

<Target Name="AddCustomSkipRules">
    <Message Text="Adding Custom Skip Rules" />
    <ItemGroup>      
      <MsDeploySkipRules Include="SkipFilesInFilesFolder">
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Content\\Images\\testing\\.*</AbsolutePath>
        <Apply>Destination</Apply>
      </MsDeploySkipRules>

      <MsDeploySkipRules Include="SkipFoldersInFilesFolders">
        <SkipAction></SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Content\\Images\\.*\\*</AbsolutePath>
        <Apply>Destination</Apply>
      </MsDeploySkipRules>

      <MsDeploySkipRules Include="SkipFilesInFilesFolder">
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\*.ico</AbsolutePath>
        <Apply>Destination</Apply>
      </MsDeploySkipRules>

    </ItemGroup>
  </Target>
...

Я ожидал, что он просто не удалит папку «Тестирование», оставит там какие-либо файлы и оставит значок, но каждый раз, когда он создает его, он удаляет все и просто развертывает сайт как новый. Фавикон - это маленькая вещь, но пользователи загружают изображения в папку (в моем примере это называется тестированием), и они удаляются при сборке и публикации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...