【问题标题】:TFS Continuous Integration Build Trigger only one project not depending projectsTFS持续集成构建只触发一个项目不依赖项目
【发布时间】:2013-12-19 15:31:10
【问题描述】:

我有一个特殊要求,即在 TFS 2012 中设置构建定义。 我有一个包含 26 个依赖项目的大解决方案。假设我们将这些项目称为 A 到 Z。 假设构建顺序是首先构建 A,然后构建 B,因为 B 依赖于 A,然后构建 C,因为它依赖于 A 和 B,依此类推......

A

B <- A

C <- A,B

..

Z <- A,B,C,D,...,Y

我的计划是使用 26 种不同的构建定义来设置持续集成。 然后应该开始构建,以防相关项目的源代码发生变化。

例如,如果我更改项目 C,我不希望之前构建 A 和 B。 但这是不可能的,因为 C 的构建定义需要 A、B 和 C 的工作区设置,否则 C 将无法编译。

我现在的问题是:我怎样才能只用 CI 构建那些实际上已经改变的项目?

【问题讨论】:

  • 你问如何在 CI 中进行增量构建?
  • 有时很难为特定问题找到正确的术语,但增量构建似乎是我正在寻找的术语。但是还有一个问题,因为增量构建可能是解决方案。如果我使用多个构建代理,增量构建如何工作,如果构建控制器决定他将使用哪个代理。如果它一直在切换并且我有 4 个代理,那么代理将获得所有依赖项目的最新源代码至少 4 次?
  • 代理将在选择运行构建时获得适当的源代码。如果没有被选中,它什么也不做。

标签: tfs project integration continuous


【解决方案1】:

尝试进入构建定义的“进程”选项卡。在 Basic 下,将 Clean Workspace 更改为 None。这将设置增量构建。这类似于 Visual Studio 中的 Build 与 Visual Studio 中的 Rebuild。它只会重建已经改变的东西。

【讨论】:

  • 它如何与多个构建代理一起工作?每个构建代理都有自己的工作空间
  • 每个代理在构建服务器上都有自己的目录,它从源控制获取所有当前源代码以便编译它。在我的特定场景中,它位于 C:\build\$agentnr$\... 如果控制器随机选择它将采用哪个代理,代理 1 会将源代码下载到文件夹 C:\build\1\...它最初在那里构建项目 A、B 和 C,因为它是第一次。如果我第二次触发构建,控制器将例如选择代理 2。因此代理 2 会将源下载到 C:\build\2\...,因此增量构建将不起作用。
  • 这个人也有同样的问题:build-agents-sharing-common-build-folder。我认为他给出了正确的答案,但我现在必须开始考虑如何设置它......以及是否还有其他问题......
  • 我相信构建定义,一旦第一次运行,将在同一位置构建该特定构建定义的后续构建,所以我在回答中所说的应该仍然相关。跨度>
  • 很抱歉,但每次触发构建定义(如负载平衡)时,控制器仍会随机选择一个新代理。我已经测试过了。您无法确定它将是哪个代理,但您当然通过提到增量构建来帮助我。这绝对是解决方案,但在这种情况下还有其他问题
猜你喜欢
  • 2015-11-16
  • 2013-01-30
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2016-03-14
相关资源
最近更新 更多