Копировать файл Powershell из переменной среды в папку zip другой переменной среды - PullRequest
0 голосов
/ 02 мая 2018

Я действительно новичок в Powershell и хочу скопировать файл из переменной среды BUILD_SOURCESDIRECTORY в папку zip внутри переменной среды BUILD_STAGINGDIRECTORY в моем определении сборки VSTS.

if(Test-Path $Env:BUILD_SOURCESDIRECTORY/MyFolder/MyFIle.txt)
{
 Write-Host "Source File: $Env:BUILD_SOURCESDIRECTORY/MyFolder/MyFIle.txt"
 Write-Host "Target Location: $Env:BUILD_STAGINGDIRECTORY\StagingDirectoryFolder.zip\TestFolder"
}

Копировать файл из одного пути в другой довольно просто, но я действительно не знаю, как переместить файл в структуру папок zip.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы можете скопировать MyFIle.txt в подпапку TestFolder в zip-файле с помощью Expand-Archive и Compress-Archive (как упоминает gvee). Сценарий PowerShell, как показано ниже:

if(Test-Path $(Build.SourcesDirectory)\MyFolder/MyFIle.txt)
{
  clear-host
  [string]$zipF = '$(Build.ArtifactStagingDirectory)\StagingDirectoryFolder.zip'
  [string]$fileToZip = '$(Build.SourcesDirectory)\MyFolder\MyFIle.txt'
  [string]$tempEx= '$(Build.SourcesDirectory)\temp'
  [string]$copyDes='$(Build.SourcesDirectory)\temp\TestFolder'
  Expand-Archive -Path $zipF -DestinationPath $tempEx -Force
  Copy-Item $fileToZip -Destination $copyDes -Force
  Compress-Archive -Path $tempEx\* -Update -DestinationPath $zipF 
  Remove-Item -Recurse -Force $tempEx
}

Теперь zip-файл $(Build.ArtifactStagingDirectory)\StagingDirectoryFolder.zip содержит MyFIle.txt в $(Build.ArtifactStagingDirectory)\StagingDirectoryFolder.zip\TestFolder.

0 голосов
/ 03 мая 2018

Если бы я мог предложить решение не-Power Shell (хотя стоит поискать командлеты Expand-Archive и Compress-Archive , как рекомендовано в комментариях.)

Я бы использовал задачу сборки Archive Files для обработки архивирования. В своем сценарии сборки Power Shell скопируйте свои артефакты в $ENV:BUILD_BINARIESDIRECTORY, а затем используйте сборку VSTS для архивирования всех файлов.

archive step

Это позволит вам затем опубликовать этот zip-файл с помощью сборки VSTS, что позволит ему быть легко доступным через веб-интерфейс VSTS, который imo предлагает превосходный пользовательский интерфейс (для устранения неполадок вашей сборки, а также других пользователей, которым необходим доступ к эти артефакты (либо физические люди, либо автоматизированные процессы)). Если вам нужно сделать что-то еще с zip-файлом, вы можете добавить еще один скрипт powershell после вашего archive files, который сможет получить доступ к файлу из $ENV:BUILD_ARTIFACTSTAGINGDIRECTORY. Таким образом, ваши сценарии остаются простыми, и вы можете переложить часть ваших сборок в Microsoft.

...