azure-devops - 如何在 VSTS 构建过程中创建 zip 之前修改 Publish Artifact 文件夹 $(build.artifactstagingdirectory)?
问题描述
我定义了 VSTS 构建过程,直到发布工件步骤。默认情况下,VSTS 代理在 Publish Artifact 位置 (c:\vsts-agent_work\1\a) 创建 5 个文件,包括重要的构建文件,即 zip 文件夹。当我检查 zip 文件夹时,我发现我的构建文件所在的路径很长。zip 中的文件夹路径 -
\Content\C_C\vsts-agent\_work\1\s\ABCProject\obj\Release\Package\PackageTmp
在查看 _work 文件夹后,我知道 zip 文件的源是源目录-
C:\vsts-agent\_work\1\s\ABCProject\obj\Release\Package\PackageTmp
我想要 C:\vsts-agent\_work\1\s\CCM2015MVC\obj\Release\Package\PackageTmp 目录中的一个文件夹(RDLCReports 文件夹)。我设法使用复制文件任务创建了该文件夹。我在发布工件步骤之前执行了此步骤。
问题是当发布工件步骤完成时,我没有在 zip 文件中获得该文件夹。
下面是 VSTS 构建过程的快照-
以下是发布工件位置 -
请让我知道如何在 zip 中添加该文件夹?而且我还想知道 VSTS 构建考虑将哪个源路径作为 zip 文件夹?
解决方案
文件夹 (c:\vsts-agent_work\1\a) 中的内容是在Visual Studio 构建任务步骤中创建的。这样即使您设法在C:\vsts-agent\_work\1\s\CCM2015MVC\obj\Release\Package\PackageTmp
使用复制文件任务中创建 RDLCReports 文件夹。它不会被复制和c:\vsts-agent_work\1\a
再次压缩。
有一种解决方法可以实现这一点。如果要将文件夹结构保留在 zip 文件中,可以按照以下步骤操作:
1,您需要添加一个提取文件任务来将文件夹$(build.artifactstagingdirectory)中的zip文件提取到不同的文件夹(eg.$(Agent.BuildDirectory)/Temp)
2、添加复制文件任务,在$(Agent.BuildDirectory)/Temp解压文件夹内创建RDLCReports文件夹
3,添加存档文件任务以存档文件夹 $(Agent.BuildDirectory)/Temp 中的文件,其中创建文件夹 RDLCReports。
确保取消选中选项将根文件夹名称添加到存档路径并选中 替换现有存档
(如上例,我的测试项目名为 AboutSite,zip 文件为 AboutSite.zip,文件夹结构为Content\C_C\agent\_work\1\s\AboutSite\AboutSite\obj\Release\netcoreapp2.0\PubTmp\Out
. 您需要根据自己的项目对路径和文件名稍作更改。)
对于您的项目,您可能会发现其中的内容C:\vsts-agent\_work\1\s\ABCProject\obj\Release\Package\PackageTmp
与您的 zip 文件相同。所以还有另一种解决方法是添加复制文件任务并以此路径为目标C:\vsts-agent\_work\1\s\ABCProject\obj\Release\Package\PackageTmp
。然后添加归档文件任务来归档这个文件夹。但是,此解决方法无法保留原始文件结构。
推荐阅读
- c++ - 如何在 C++ 中非破坏性地检查目录中的任何内容都不能被写入/删除
- .htaccess - 在启用 GoogleAMP 的页面中增加缓存“从 CDN 加载的 Javascript”?
- r - 使用 ggplot 过滤时,“美学必须是任一长度”
- c# - C# - Selenium - UI 测试 - IWebDriver - 对象引用未设置为对象的实例
- angularjs - $http.get 使用 Ionic v1 和 Firebase 托管返回 index.html
- django - 如何将 django-taggitsimilar_objects() 与基于类的视图一起使用
- excel - Expression.Error:无法识别名称“Text.BeforeDelimiter”。Excel 2016
- amazon-web-services - 如何在亚马逊 AWS 上加载 ena 驱动程序?
- api - 如何在 .net core 2.1 Angular 模板中测试 postman 中的 API 调用?
- android - Android上的快速(1s)双特征通知不会与外围设备断开连接