【问题标题】:Checkins to TFVC Team Projects trigger builds in Git Team Project签入到 TFVC 团队项目会触发 Git 团队项目中的构建
【发布时间】:2015-09-02 09:52:00
【问题描述】:

我为持续集成设置了一个 TFS 项目。我的问题是,即使没有对我的项目进行任何更改,其他 TFS 项目的签入也会触发我的项目的构建。

这似乎与我的项目是一个 Team Foundation Git 存储库有关,而其他项目都不是。

我在哪里可以找到触发此构建的原因?

编辑:更清楚地说,我的意思是我有完全独立的团队项目。除了一个使用 Git 之外,所有这些都使用 Team Foundation 版本控制。不知何故,TFVC 团队项目的签入触发了 Git 团队项目的构建

【问题讨论】:

  • 针对 TFVC 的签入正在触发针对 Git 存储库的构建?现在是一个有趣的皱纹。

标签: git tfs continuous-integration tfsbuild tfvc


【解决方案1】:

在我们的案例中,这被 Microsoft 确定为 TFS 中的一个错误。

tbl_BuildDefinitionMapping 中相应构建的 ServerItem 列设置为“$\”。

我从 Microsoft 获得的解决方法是将其更改为不存在的内容,例如:

$\GIT_NOTAFOLDER\

这为我解决了这个问题。

您需要在 tbl_builddefinition 中查找构建定义。找到它后,请记住 DataspaceId

然后打开 tbl_builddefinitionmapping 并从上方查找 DataspaceId。您应该看到 ServerItem$\。将其更改为 $\GIT_NOTAFOLDER\,它应该可以解决问题。

【讨论】:

  • 我无法使用 sys.columns(TFS 版本 12.0.31101.0)在数据库中的任何位置找到 DataspaceId,但我确实发现在 tbl_BuildDefinitionMapping 中,我的带有 git repo 的项目被分配给了相同的 workspaceId作为触发构建的其他项目。
  • 您提到的 $\GIT_NOTAFOLDER\ 解决方法有效,并且似乎没有以任何其他方式影响我们的构建。谢谢!
【解决方案2】:

只要该构建定义工作区的任何映射文件夹中的文件发生更改,就会触发构建。

我猜你已经广泛地映射了构建定义的工作区。您应该只包含构建所需的文件夹/文件(并且只有对这些文件的更改才会触发您的构建)。

【讨论】:

  • 因为它是一个 git repo,所以我的源设置选项卡没有“工作文件夹”部分:i.imgur.com/NcvnHTE.png。我在删除“refs/heads/*”后尝试了它,但没有任何区别。还有其他方法可以更改工作区吗?
  • (因为有用而被赞成,但这并不能解决我的问题。)
【解决方案3】:

在 Git 存储库上构建的 CI 始终监控整个存储库。您可以添加的唯一过滤器是监视某些分支,但您不能像使用经典 TFVC 那样“隐藏”文件夹或文件。

【讨论】:

  • 似乎问题更多在于它正在监视存储库外部的文件夹。除非您将存储库作为这个项目加上存储在 TFS 服务器上的所有非 git 项目?我有使用 TFS 的产品 A 和 B,而产品 C 使用 git。每当有人签入产品 A 或 B 时,C 就会决定构建。
  • 您是指使用 TFVC 作为源系统的团队项目,还是同一 Git 存储库中的其他 .proj?
  • 我的意思是签入其他使用 TFVC 的团队项目正在触发我的 Git 团队项目进行构建。
【解决方案4】:

我们通过使用名为 TFS Sidekick 的工具删除 TFS 构建代理上的工作区来解决此问题。重新创建构建定义后,其他产品上的构建不再触发 Git 中产品上的构建。

我仍然不确定它们是如何关联的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-30
  • 2018-08-24
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 2011-10-15
  • 1970-01-01
相关资源
最近更新 更多