使用多个GIT仓库的TFS构建

6

看起来TFS每次构建只支持一个存储库。对我来说这还不够,因为我需要使用一些分别存储的第三方库。

我可以使用GIT子模块解决此问题,但是在这种情况下,构建将不会与提交和工作项相关联,因为它会忽略子模块中的提交。此外,子模块的更改也不会触发构建。

是否可能使用插件、扩展或类似的东西定义一个具有多个存储库的构建?

2个回答

6

正如@jessehouwing所提到的,没有默认的方法可以构建多个GIT存储库。 @jessehouwing和@Giulio Vian在此处提供了一些解决方法:

  1. 使用Nuget或其他软件包管理器存储第三方库,并添加NuGet还原任务以还原库。

  2. 添加命令行任务调用git.exe来拉取其他存储库。

  3. 创建两个构建定义,在第二个构建定义中,您需要添加一个powershell任务。在powershell脚本中,您可以使用TFS REST API来排队第一个构建定义。

但是,它们都无法将两个存储库中的提交和工作项与一个构建相关联。我发现已经有一个UserVoice在下面的网站上,您可以投票:

https://developercommunity.visualstudio.com/idea/365522/allow-tfs-build-to-depend-on-multiple-repositories.html


4
不,目前还不可能。相反,建议将第三方库构建并存储在包管理功能中(作为NuGet或npm包),然后依赖于该包而不是源代码。但这样做不会关联第三方依赖项的工作项。当然,如果您真的想要,可以从powershell或批处理脚本中调用git.exe并获取其他仓库。但这样做也不会关联工作项。

为了完成答案,您可以通过第二个存储库中的更改触发“代理”构建,其唯一操作是使用REST API(https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#queueabuild)启动主要构建。 - Giulio Vian
@Jesse,感谢您的回答。我有一个用于本地库的NET包装器,它使用超过20个其他本地库作为依赖项。单独构建它们非常不方便,也无法解决问题。我可以找到一种使用TFS构建库的方法,但如果没有自动提交和工作项关联,这将毫无意义。在TFS之外,我的当前构建服务器也没有任何区别。 - Eugene
@Giulio,感谢您的评论。 我已经查看了REST API,但没有找到添加构建关联的方法。我可以编写一个服务器端插件,使用一些构建订阅,获取提交,使用外部GIT工具或库进行解析,但是没有办法将提交与构建关联起来。 - Eugene

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