VSTS版本管理器仅复制特定文件

时间:2017-07-04 16:59:54

标签: azure-devops azure-pipelines-release-pipeline

我想从VSTS中的团队项目下载特定文件夹,并将其复制到本地服务器上。我已经设置了vsts代理,它可以通过使用“Windows机器文件复制”来复制文件,但我的问题是代理从根开始下载我的整个团队项目。

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

这是错误的做法吗?我基本上想要将我在VSTS的团队项目中的子文件夹中的一些文件复制到本地机器,而不从整个根文件夹($ / myTeamProject)下载所有内容。当我用一个复制文件的单一任务触发一个Release时,它需要永远。代理如何仅映射特定文件夹而不映射整个根文件夹?

2 个答案:

答案 0 :(得分:0)

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

想一想这种情况:你有一个发布定义,其中定义了一个管道Dev - > QA - > PROD。

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

几个小时后,您将部署到QA。您的发布定义会引入Changeset 1234。

有人更改了一些源代码。你去部署到Prod。您的版本定义会引入Changeset 123 5 。现在,您正在部署一些尚未在较低环境中测试过的内容。你只是大大增加了问题的可能性。

如果您想重新部署旧版版本以尝试重现错误,则适用相同的方案。

简而言之:在构建过程中将该文件夹作为工件发布。

答案 1 :(得分:0)

在发布定义中,您无法指定要从工件中下载的部分文件(工件源链接用于选择构建定义的工件)。

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

enter image description here