如何在 VSTS 构建过程中创建 zip 之前修改 Publish Artifact 文件夹 $(build.artifactstagingdirectory)?
How to modify Publish Artifact folder $(build.artifactstagingdirectory) prior its zip creation in VSTS Build process?
我定义了 VSTS 构建过程,直到发布工件步骤。默认情况下,VSTS 代理在发布工件位置 (c:\vsts-agent_work\a) 中创建 5 个文件,包括重要的构建文件,即 zip 文件夹。当我检查 zip 文件夹时,我发现我的构建文件所在的路径很长。 zip 中的文件夹路径 -
\Content\C_C\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
我在查看_work文件夹后才知道zip文件的来源是源目录-
C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
我想要 C:\vsts-agent\_work\s\CCM2015MVC\obj\Release\Package\PackageTmp 目录中的一个文件夹(RDLCReports 文件夹)。我设法使用复制文件任务创建了该文件夹。我在 Publish Artifact 步骤之前做了这一步。
问题是当 Publish Artifact 步骤完成时,我没有在 zip 文件中得到那个文件夹。
下面是 VSTS 构建过程的快照-
下面是 Publish Artifact 位置 -
请告诉我如何在 zip 中添加该文件夹?我还想知道 VSTS build 考虑将其作为 zip 文件夹的源路径?
文件夹 (c:\vsts-agent_work\a) 中的内容是在 Visual Studio 构建任务 步骤中创建的。因此,即使您设法使用复制文件任务在 C:\vsts-agent\_work\s\CCM2015MVC\obj\Release\Package\PackageTmp
中创建了 RDLCReports 文件夹。不会再复制压缩到c:\vsts-agent_work\a
。
有一个解决方法可以实现这一点。如果您想保留压缩文件中的文件夹结构,您可以按照以下步骤操作:
1,您需要添加一个解压文件任务将文件夹$(build.artifactstagingdirectory)中的zip文件解压到不同的文件夹(eg.$(Agent.BuildDirectory)/温度)
2、添加复制文件任务在$(Agent.BuildDirectory)/Temp中的解压文件夹中创建RDLCReports文件夹
3、添加一个归档文件任务来归档文件夹中的文件
$(Agent.BuildDirectory)/Temp,其中创建文件夹 RDLCReports。
确保取消选中选项将根文件夹名称添加到存档路径和选中替换现有存档
(对于上面的示例。我的测试项目名为 AboutSite,zip 文件为 AboutSite.zip。文件夹结构为 Content\C_C\agent\_work\s\AboutSite\AboutSite\obj\Release\netcoreapp2.0\PubTmp\Out
。您需要对路径和文件进行一些更改根据您的项目命名。)
对于您的项目,您可能会发现 C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
中的内容与您的 zip 文件相同。因此,还有另一种解决方法是添加复制文件任务并以此路径为目标 C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
。然后添加归档文件任务来归档这个文件夹。但是,此解决方法无法保留原始文件结构。
我定义了 VSTS 构建过程,直到发布工件步骤。默认情况下,VSTS 代理在发布工件位置 (c:\vsts-agent_work\a) 中创建 5 个文件,包括重要的构建文件,即 zip 文件夹。当我检查 zip 文件夹时,我发现我的构建文件所在的路径很长。 zip 中的文件夹路径 -
\Content\C_C\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
我在查看_work文件夹后才知道zip文件的来源是源目录-
C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
我想要 C:\vsts-agent\_work\s\CCM2015MVC\obj\Release\Package\PackageTmp 目录中的一个文件夹(RDLCReports 文件夹)。我设法使用复制文件任务创建了该文件夹。我在 Publish Artifact 步骤之前做了这一步。
问题是当 Publish Artifact 步骤完成时,我没有在 zip 文件中得到那个文件夹。
下面是 VSTS 构建过程的快照-
下面是 Publish Artifact 位置 -
请告诉我如何在 zip 中添加该文件夹?我还想知道 VSTS build 考虑将其作为 zip 文件夹的源路径?
文件夹 (c:\vsts-agent_work\a) 中的内容是在 Visual Studio 构建任务 步骤中创建的。因此,即使您设法使用复制文件任务在 C:\vsts-agent\_work\s\CCM2015MVC\obj\Release\Package\PackageTmp
中创建了 RDLCReports 文件夹。不会再复制压缩到c:\vsts-agent_work\a
。
有一个解决方法可以实现这一点。如果您想保留压缩文件中的文件夹结构,您可以按照以下步骤操作:
1,您需要添加一个解压文件任务将文件夹$(build.artifactstagingdirectory)中的zip文件解压到不同的文件夹(eg.$(Agent.BuildDirectory)/温度)
2、添加复制文件任务在$(Agent.BuildDirectory)/Temp中的解压文件夹中创建RDLCReports文件夹
3、添加一个归档文件任务来归档文件夹中的文件 $(Agent.BuildDirectory)/Temp,其中创建文件夹 RDLCReports。
确保取消选中选项将根文件夹名称添加到存档路径和选中替换现有存档
(对于上面的示例。我的测试项目名为 AboutSite,zip 文件为 AboutSite.zip。文件夹结构为 Content\C_C\agent\_work\s\AboutSite\AboutSite\obj\Release\netcoreapp2.0\PubTmp\Out
。您需要对路径和文件进行一些更改根据您的项目命名。)
对于您的项目,您可能会发现 C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
中的内容与您的 zip 文件相同。因此,还有另一种解决方法是添加复制文件任务并以此路径为目标 C:\vsts-agent\_work\s\ABCProject\obj\Release\Package\PackageTmp
。然后添加归档文件任务来归档这个文件夹。但是,此解决方法无法保留原始文件结构。