我是Powershell的新手,想要将BUILD_SOURCESDIRECTORY环境变量中的文件复制到我的VSTS构建定义中的BUILD_STAGINGDIRECTORY环境变量中的zip文件夹中。
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文件夹结构中。
答案 0 :(得分:1)
如果我可以推荐非强力shell解决方案(尽管值得按照评论中的建议查找Expand-Archive和Compress-Archive cmdlet。)
我会使用Archive Files
构建任务来处理压缩。在power shell构建脚本中,将工件复制到$ENV:BUILD_BINARIESDIRECTORY
,然后利用VSTS构建来存档所有文件。
然后,您可以使用VSTS构建发布该zip文件,从而可以通过VSTS web gui轻松访问该文件,这样可以提供卓越的用户体验(用于对构建进行故障排除,以及需要访问的其他用户)那些工件(物理人员或自动化流程))。如果您需要对zip文件执行其他操作,则可以在archive files
之后添加另一个PowerShell脚本,以便能够从$ENV:BUILD_ARTIFACTSTAGINGDIRECTORY
访问该文件。这样您的脚本就可以保持简单,并且可以将一些构建维护卸载到Microsoft上。
答案 1 :(得分:0)
您可以MyFIle.txt
和TestFolder
将Expand-Archive
复制到zip文件下的子文件夹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
。