【问题标题】:How to build interdependent solutions in VSTS如何在 VSTS 中构建相互依赖的解决方案
【发布时间】:2017-11-22 15:45:31
【问题描述】:

我有一个这样的项目结构:

Repos\WebApi

Repos\WebPortal

Repos\BackendService

回购\扩展

它们每个都在自己的存储库中,有自己的解决方案,但它们都依赖于 Extensions 项目。

过去我使用 CCNET 并能够构建 Extensions 项目,保存构建中的工件,然后使用第一次构建中的工件触发其所有依赖项的构建。

我的问题是:如何在 VSTS 中做到这一点。或者,如果答案是你不能,我应该如何构建我的项目以保持 DRY、SRP 和自动化?我不想在一个解决方案中添加所有项目(实际上涉及更多的项目和多个级别的依赖项,但为了说明问题,我简化了它)

据我所知,我无法使用来自其他构建的构建工件,我无法将多个源代码库添加到 VSTS 中的构建,我也看不到在另一个构建完成时触发构建的方法。

这让我觉得我在做一些根本错误的事情。

【问题讨论】:

  • 你使用 Git 还是 TFVC 进行源代码控制?
  • 我们正在使用 git 进行源代码控制。
  • git 子模块怎么样?

标签: c# continuous-integration azure-devops project-structure


【解决方案1】:

有很多方法可以做到:

• 为 Extensions 项目创建包并上传到提要,例如 VSTS 提要:Package Management in VSTS and TFS,然后在构建期间恢复包

• 与您所说的类似:将下载构建工件任务添加到构建定义以下载扩展构建的工件。您也可以通过 PowerShell 调用 Builds REST API 来获取构建工件。

• 如果您使用 TFVC 存储库,您可以通过在构建定义的 Get Sources 部分 中指定额外的 Workspace mappings 来获取 Extensions 项目(直接指定,可以点击……选择)

• 使用Download Artifacts-External TFS Git/TFVC 任务下载其他存储库

• 如果是 Git 存储库,则使用 git submodule

关于从另一个构建触发构建,您可以使用Trigger Build task

【讨论】:

  • 感谢您的回复,我不想使用 git 子模块方法,因为我认为管理它不仅仅是我们想要的。我正在尝试使用“下载构建工件(预览)”任务,有没有办法用这个任务指定最新的构建?我选择了“特定构建”,适当的项目和构建定义,但构建下拉列表仅允许在我真正想要的是使用来自所选项目的最新构建的工件时选择特定构建&构建定义。
  • 您不能在Download Build Artifacts任务中指定最近的构建,您可以调用Builds REST API来获取构建工件。
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 2015-03-21
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多