Azure DevOps Pipeline - сценарий Power Shell, копирование файлов с использованием переменных - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю над Azure DevOps Build Pipeline, и одна из задач - скопировать мои dll и pdb файлы в промежуточную папку, например

Code
  MyProject
     Bin
       Debug
          MyProject.dll
          MyProject.pdb

Staging
   Client
     Libraries

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

Copy-Item $(Build.Repository.LocalPath)\Code\MyProject\Bin\$(DebugBuildConfiguration) 

-Destination $(ClientLibrariesFolder)

Ниже приведены мои переменные

Variable Name                  Variable Value
StagingFolder              $(Build.Repository.LocalPath)\Staging
DebugBuildConfiguration           Debug
ClientLibrariesFolder        $(StagingFolder)\Client\Libraries

Я не получаю никакой ошибки. Но ничего не происходит.

РЕШЕНИЕ:

Я решил мою проблему следующим образом

Я добавил новую переменную, как показано ниже

CodeLocalPath : $(Build.Repository.LocalPath)

Я добавил задачу Powershell в свой конвейер сборки Azure DevOps.

Я дал Type как Inline .

В сценарии я дал ниже

$destination = "{0}" -f $env:ClientLibrariesFolder

# Copy MyProject.dll to Staging\Client\Libraries
$sourcefolder = "{0}\Code\MyProject\Bin\{1}\MyProject.dll" -f $env:CodeLocalPath, $env:DebugBuildConfiguration
"Source : {0} and Destination : {1} " -f $($sourcefolder), $($destination)
Copy-Item $($sourcefolder) -Destination $($destination)

# Copy MyProject.pdb to Staging\Client\Libraries
$sourcefolder = "{0}\Code\MyProject\Bin\{1}\MyProject.pdb" -f $env:CodeLocalPath, $env:DebugBuildConfiguration
"Source : {0} and Destination : {1} " -f $($sourcefolder), $($destination)
Copy-Item $($sourcefolder) -Destination $($destination)

1 Ответ

0 голосов
/ 30 апреля 2019

Я не получаю никакой ошибки. Но ничего не происходит.

Что вы имеете в виду " Но ничего не происходит "? Вы имеете в виду, что файлы не были скопированы в ваши репо?

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

Если вы установите system.debug=true на вкладке переменных, вы найдете журнал как:

##[debug]Copy-Item C:\VS2017Agent\_work\8\s\TestSample\TestSample\Bin\Debug\*.* -Destination C:\VS2017Agent\_work\8\s\TestSample\Staging\Client\Libraries'

Он не будет копировать файл в хранилище. Это должно быть причиной, почему вы видите, что ничего не происходит.

Кроме того, Глядя на документацию Microsoft описания выглядят следующим образом:

$(Build.Repository.LocalPath): Локальный путь на агенте , где Ваши исходные файлы загружены. Например: c: \ agent_work \ 1 \ s По умолчанию новые определения сборки обновляют только измененные файлы. Вы можно изменить способ загрузки файлов на вкладку «Репозиторий».

Итак, значение этой переменной указывает на агента вместо репозитория .

Примечание: Copy-Item в powershell должен копировать файлы вместо папки, попробуйте использовать *.* для включения всех файлов в папку.

...