Team Build 2008 / MSBuild Copy Task выдает ошибку при попытке копирования файлов - PullRequest
1 голос
/ 02 ноября 2010

В рамках автоматической сборки я очищаю каталог и копирую последние версии исходных файлов в этот каталог. Сначала я настраиваю список файлов, которые хочу скопировать:

    <CreateItem
         Include="\\BuildServer\Build_Temp\SomeRootDirectory\**\*">
        <Output
           TaskParameter ="Include"
           ItemName ="FilesToCopy"/>
    </CreateItem>

И пусть моя система узнает, где находится мой QA-сервер:

    <CreateProperty
          Value="\\QAWebServer\Websites\MySite">
        <Output
            TaskParameter="Value"
            PropertyName ="MyDropLocation"/>
    </CreateProperty>

Затем я удаляю и воссоздаю свой каталог на конечном сервере, чтобы уничтожить все файлы (это сборка с выжженной землей, чтобы убедиться, что мы случайно не оставляем файлы, не являющиеся частью системы контроля версий в нашем веб-каталоге).

    <RemoveDir Directories="\\QAWebServer\Websites\MySite"  />
    <MakeDir Directories="\\QAWebServer\Websites\MySite"  />

Наконец, я выполняю задачу копирования:

    <Copy
            SourceFiles="@(FilesToCopy)"
            DestinationFiles="@(FilesToCopy->'$(MyDropLocation)\%(RecursiveDir)%(Filename)%(Extension)')"
            OverwriteReadOnlyFiles="True"/>

Затем я получаю полученную ошибку при попытке скопировать файлы. Интересно, что некоторые делают это, а некоторые нет (в данном случае это выглядит почти исключительно в корне каталога, который я только что создал выше):

  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Import.swf" to "\\QAWebServer\Websites\MySite\Import.swf". Access to the path '\\QAWebServer\Websites\MySite\Import.swf' is denied.
  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Incomplete.swf" to "\\QAWebServer\Websites\MySite\Incomplete.swf". Access to the path '\\QAWebServer\Websites\MySite\Incomplete.swf' is denied.
  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Index.html" to "\\QAWebServer\Websites\MySite\Index.html". Access to the path '\\QAWebServer\Websites\MySite\Index.html' is denied.

Я проверил права доступа к файловой системе (каждый имеет право создавать / изменять / и т. Д.), И нет никаких проблем при добавлении файлов в структуру подкаталогов на \ QAWebServer \ Websites \ MySite, просто (primarilly) для корень.

1 Ответ

1 голос
/ 05 декабря 2010

Нам наконец-то пришлось это исправить, переключившись на задачу XCopy.

<Exec Command="xcopy /E /R /Y \\buildMachine\Build_Temp\BuildSource
 \\QAWebServer\Websites\MySite"/>
...