首页 > 解决方案 > 如何在 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 文件夹?

标签: azure-devopsazure-pipelines-release-pipelineazure-artifacts

解决方案


文件夹 (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。然后添加归档文件任务来归档这个文件夹。但是,此解决方法无法保留原始文件结构。


推荐阅读