Teamcity задержка копирования артефактов - PullRequest
1 голос
/ 09 января 2012

Я запускаю сценарий MSBuild для компиляции моего проекта и iv устанавливаю путь к артефакту в общих настройках TeamCity. Мои сценарии MSBuild сначала создают, а затем создают zip-файл. Я хотел бы добавить этот zip-файл в качестве артефакта, но когда я запускаю сборку на TeamCity, я получаю эту ошибку:

[17:44:56]: [CreateNightlyZip] Zip
[17:44:56]: [Zip] C:\BuildAgent\Build\Build.proj(55, 5): The process cannot access the file 'C:\BuildAgent\work\c13cf8f192b25cd1\bin\Debug\20120109_Foo.PE.zip' because it is being used by another process.

Похоже, что TeamCity пытается получить zip-файл сразу после его создания, а затем мой сценарий MSBuild не может поместить файлы в него.

Вот цель MSBuild:

 <Target Name="CreateNightlyZip">
    <PropertyGroup>
      <StringDate>$([System.DateTime]::Now.ToString('yyyyMMdd'))</StringDate>
    </PropertyGroup>
    <ItemGroup>
      <DebugApplicationFiles Include="$(DebugPath)\**\*.*" Exclude="$(DebugPath)\*vshost.exe*" />
    </ItemGroup>
    <MakeDir Directories="$(NightlyBuildPath)"/>
    <Zip Files="@(DebugApplicationFiles)"
      WorkingDirectory="$(DebugPath)"
      ZipFileName="$(NightlyBuildPath)\$(StringDate)_$(NightlyZipName).zip"
      ZipLevel="9" />
  </Target>

Кто-нибудь сталкивался с такой проблемой или как ее решить?

РЕДАКТИРОВАТЬ: Странно то, что когда я создаю zip-файл в корне папки извлечения, все работает, но когда я создаю его в папке Debug, я получаю эту ошибку.

Ответы [ 2 ]

2 голосов
/ 10 января 2012

TeamCity публикует артефакты только после завершения всех этапов сборки, т. Е. После завершения сценария MSBuild.

Чтобы опубликовать артефакты во время сборки, вам нужно создать специальное служебное сообщение из скрипта сборки, когда артефакты будут готовы: http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-PublishingArtifactswhiletheBuildisStillinProgress

Если вы не используете служебные сообщения, вам следует проверить, какой процесс заблокировал файл. Может быть, у вас есть два агента на одной и той же машине, которые работают одновременно и создают помехи друг другу?

1 голос
/ 13 января 2012

Я закончил тем, что не поместил созданный ZIP-файл в папку отладки, а просто в корневую папку проекта. После этого создается zip-файл, и Teamcity может использовать его в качестве артефакта.

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