【发布时间】:2013-10-09 04:44:02
【问题描述】:
在 TeamCity 中,您可以创建构建依赖项,其中一个构建在另一个构建成功完成之前不会开始。 TFS 2012 有可能吗?在哪里可以找到有关如何设置的更多信息?
【问题讨论】:
在 TeamCity 中,您可以创建构建依赖项,其中一个构建在另一个构建成功完成之前不会开始。 TFS 2012 有可能吗?在哪里可以找到有关如何设置的更多信息?
【问题讨论】:
简短的回答是,TFS 没有等效的功能,但您可以通过一些工作来实现相同的目标。
我遇到的一个常见场景是,一个团队想要在签入时进行构建,该构建执行一些快速的工作(编译、快速单元测试),然后在想要进行另一个构建运行一些较慢的工作(集成测试)之后立即,测试部署等)。我经常和我的团队一起这样做,我将设置一个在 5 分钟内运行的 Gated Build,然后在 Gated Build 签入后立即启动一个 CI 构建,这可能需要一个小时才能运行。我喜欢这种方法,因为它可以让开发人员快速获得一些反馈,然后很快就会得到更详细的反馈。
另一个受支持的场景是让构建显式启动它的依赖项。如果您查看 Lab Build 模板,它正是这样做的,它将首先启动应用程序 TFS Build,Lab Build 将等待它完成,然后 Lab Build 将继续。从理论上讲,您可以让构建 A 启动构建 B 启动 C 和 D 等。
如果您的需求比这更复杂(例如,您有多个应用程序,每个应用程序都有一个构建,那么一个产品包含一些需要在每个应用程序更改后构建的应用程序,然后可能是一个产品套件构建需要每当产品更改时启动 - 这是我处理的场景)。我基本上实现了一个自定义构建依赖系统来处理这个问题。我们创建了一个描述构建依赖项的 XML 文件,然后编写了一个简单的 ISubscriber 插件,我们将部署到 TFS,它会侦听 Build Completed 事件,然后查阅依赖项配置并启动适当的构建。
【讨论】: