使用VSTS从多个代码库进行构建

13

我有两个代码库,一个是TFVC,另一个是Git。由于特定的技术原因,需要将它们分开。

TFVC中的代码是在私有构建代理上构建的,而Git中的代码是在托管代理上构建的。因此,目前我有两个独立的构建,并且它们的结果通过发布定义一起部署。

我想创建能够从这两个代码库获取源代码的构建,以便我只需管理单个构建定义。

有没有办法实现这一点?

3个回答

16

目前,在获取资源的步骤中无法指定多个仓库。

用户发表了一个建议 允许TFS构建依赖于多个仓库。您可以投票并关注类似的功能。

现在的解决方法是手动从其他仓库获取文件

例如,如果您在获取资源步骤中指定了TFVC仓库,则可以在任务开始时添加一个PowerShell任务,通过git clone <repo URL>等命令来克隆其他git仓库。


1
此请求已正式添加到路线图中,计划于2019年Q3进行。请参见https://dev.azure.com/mseng/AzureDevOpsRoadmap/_workitems/edit/1454026。 - Assaf Stone
截至今日,该功能计划于2019年第四季度推出。即将到来! - Mass Dot Net

6

TFVC

TFVC 是 Team Foundation Version Control 的缩写,是微软的一种版本控制工具。

同时,你也可以采用 Marina 回答中的相反方式。默认情况下,将构建定义绑定到 Git 后,你可以添加一个 PowerShell 脚本来映射工作区并获取源代码:

tf workspace /new /noprompt /location:local /permission:private <name>
tf workfold /map $/Server/Path "$(Agent.BuildDirectory)\tfvc" /workspace:<name>
tf get "$(Agent.BuildDirectory)\tfvc"

并添加一个“始终运行任务”以在完成后清理工作区:

tf workspace /delete <name>
rd /s /q "$(Agent.BuildDirectory)\tfvc"

下载构件

另一种选择是使用“下载构件”任务,从以下扩展中下载构件:发布管理的TFS构件

或者使用VSTS自带的“下载构件”任务,但这需要一个链接到构建定义以进行下载,这意味着您可以在Git或TFVC上具有CI构建来构建源代码,或者仅附加源目录,然后在“其他”构建中获取这些构件。


3
你是否真的想同时构建两个存储库,并将构建产物混合在一起?还是只想使用相同的定义来针对不同的来源进行构建?
如果你确实需要前者,你可以像其他答案所指出的那样,在构建期间脚本获取源代码。但是,如果在托管上构建Git和在私有TFVC上构建是一个硬性要求,同时构建两组源代码将会失败。
我建议创建一个任务组,包含你共同拥有的任务。然后创建引用该任务组的单独的构建定义。

不错的TaskGroup提示,将尝试在多个存储库中使用它,因为无法为同一VSTS项目下的存储库创建一个典型的构建。 - oleksa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接