【问题标题】:TFS 2013.4 build with GIT submodules are failing带有 GIT 子模块的 TFS 2013.4 构建失败
【发布时间】:2023-03-04 02:17:01
【问题描述】:

我们刚刚将 TFS 更新为 TFS 2013 更新 4 (TFS2013.4),并且我们正在我们的存储库中使用 GIT 子模块(我们在构建服务器上使用一些自定义 MSBUILD 魔法进行了更新)。

但是现在有了最新的更新,我们的构建都失败了,并显示以下消息:

无法设置未知成员 'Microsoft.TeamFoundation.Build.Activities.Git.GitPull.CheckoutSubmodules'。

似乎微软已经添加了对 GIT 子模块的某种支持,但是它在我们的构建服务器上确实失败了。

关于如何解决这个问题的任何想法?

【问题讨论】:

标签: git tfsbuild


【解决方案1】:

这是由我自己的愚蠢造成的(大多数情况下)。

我认为只安装 Visual Studio Update 4 (VS2013.4) 会为 TFS 使用的构建服务器安装相同的客户端库,但我错了。

只需将 TFS Build 服务器更新到 TFS2013.4 即可解决问题。

编辑:唯一解决的问题是更新子模块的“hackety MSBUILD 魔法”再次起作用,没有原生支持。

似乎 TFS 服务器上的 TFS2013.4 和构建服务器上的 TFS2013.2 之间的不同版本导致了根本无法获取 repo 的问题,无论它是否具有子模块。

正如问题中的错误导致相信的那样,构建服务器似乎开始原生支持子模块,但我无法完成这项工作。

编辑 2:

对于那些要求黑客解决方案的人,我最终在构建服务用户的配置文件文件夹中使用纯文本 _netrc 文件,如下所示:

machine <hostname1>
login <login1>

Git - How to use .netrc file on windows to save user and password

我也遇到过TFS构建服务账号在TFS构建环境下运行时,没有设置HOME环境变量的问题,所以我不得不手动设置:

在系统属性>环境变量下

将系统变量HOME设置为%PROFILE%

【讨论】:

  • 当你说“解决了你的问题”——你的意思是 TFS2013.4 现在会为你更新你的子模块吗?还是您的意思是构建错误消失了 - 因此您可以继续使用手动更新子模块的脚本?
  • @Quantumplation 是的,这可能有点棘手。我已经更新了答案,请参阅编辑 2
  • @Zilad 非常感谢更新信息!我终于有机会试一试,它似乎奏效了!我现在唯一的问题是,出于某种原因,TFS 将克隆注册为失败(如:i.imgur.com/euDcqwM.png),即使它成功检出子模块并继续构建。你也遇到过这种情况吗?
  • 现在我通过将子模块更新命令的输出传递到 nul 来解决它。
  • @Quantumplation 太棒了!是的,我也遇到了这个问题,但是我现在从 msbuild 运行 git 命令,所以我不再有这个问题了。
【解决方案2】:

仅供参考,似乎子模块结帐适用于 TFS2015... 看看the image to configure a git build,有一个更新子模块的复选框..

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 2017-09-12
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2016-08-06
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多