VSTS Release Manager 仅复制特定文件

VSTS Release Manager copy only specific files

我想从我在 VSTS 中的团队项目中下载特定文件夹并将其复制到本地服务器。我已经设置了 vsts 代理,它可以使用 "Windows Machine File Copy" 很好地复制文件,但我的问题是代理从根目录开始下载我的整个团队项目。

在 Artifacts 中,当我选择 Link 工件源并在类型下选择 Team Foundation Version Control,在 Source (repository) 下,我只能在下拉列表中选择我的团队项目 $/myTeamProject。我无法在 VSTS 中提供路径,例如 $/myTeamProjet/Main/subfolder.

这是错误的做法吗?我基本上想将一些文件从我在 VSTS 中的团队项目中的子文件夹复制到本地计算机,而不是从整个根文件夹 ($/myTeamProject) 下载所有内容。当我使用复制文件的单一任务触发发布时,它会花费很长时间。代理如何只映射特定文件夹而不映射整个根文件夹?

我认为这不是一个好方法。您的构建应该发布一组工件,代表一整套可部署位,当您通过管道部署它们时,这些位将保持静态

想想这个场景:您有一个发布定义,其中定义了一个管道,即 Dev -> QA -> Prod。

您部署到 Dev。您的发布定义从源代码管理中提取了 Changeset 1234。

几个小时后,您部署到 QA。您的发布定义引入了变更集 1234。

有人更改了一些源代码。你去部署到 Prod。您的发布定义引入了变更集 1235。现在您正在部署一些尚未在较低环境中测试的东西。您刚刚大大增加了出现问题的可能性。

如果您想要重新部署版本以尝试重现错误,同样的情况也适用。

简而言之:将该文件夹发布为构建过程的一部分。

在发布定义中,您不能指定要从工件中下载的部分文件(工件源link供您选择从哪个构建定义中选择工件)。

但是您可以通过 Windows 机器文件复制任务指定要复制的文件。对于 Windows Machine File Copy 中的源选项,您可以指定要复制的子文件夹,例如 $(System.DefaultWorkingDirectory)/BuildDefinition/drop/Main/subfolder.