【问题标题】:`npm install` times out on TFS 2015 build | dependencies are TFS-hosted Git repos`npm install` 在 TFS 2015 构建中超时依赖项是 TFS 托管的 Git 存储库
【发布时间】:2017-02-13 05:29:40
【问题描述】:

在 TFS 2015(“XPlat”)构建中,npm install 步骤会挂起,直到超时。已尝试 10、20 和 30 分钟的超时。

npm install 获取在package.json 文件中定义的本地依赖项作为提交式引用,例如,

"ui-core": "git+http://tfs:8080/tfs/DefaultCollection/etc/_git/ui-core"

我相信是那些依赖关系导致了问题,因为有时当我登录构建服务器(作为服务帐户)并手动输入npm install(在超时的构建目录中)时,Git凭据管理器提示我进行身份验证。但是,依赖项不是可选的。

(事件日志和构建日志中都没有其他错误。)

我们使用的是 TFS 托管的 Git,它需要域级身份验证 (Kerberos)。这在我们的大多数环境中由Git Credential Manager 处理(有些人建议使用winstore 代替;请注意git-credential-managerwinstore 的替代品,而wincred 不是一个选项,因为TFS)。但是,身份验证也不是可选的(业务要求)。

另外,请注意:我们正在运行 TFS 2015 Update 3,因此该更新解决的 npm install 问题可能不是原因(是的,所有构建代理都已更新)。编辑:这里有一个答案建议使用 SSH,我完全支持它作为一个可行的解决方案,但它被删除了。我认为在我们的案例中,问题在于所有开发人员都必须创建和上传 SSH 公钥身份验证令牌。

还有其他人遇到过这个问题吗?有没有我找不到的简单解决方案?我不知道有任何其他凭据管理器会做得更好,我不知道为什么首先会放弃身份验证(或者我是否缺少黑客攻击),并且没有保留手动更新的另一个共享上的存储库副本(不是最好的!)我看不到一个好的解决方案。

【问题讨论】:

  • 您能否尝试将构建代理配置为使用安装 GCM 时使用的同一帐户运行?
  • 很遗憾,没有,因为我以域用户身份安装了 GCM,但构建代理无法使用这些权限运行。我可以尝试使用服务帐户重新安装choco git 包...
  • 您的构建代理是作为服务还是交互模式运行?
  • 能否将其配置为交互模式,以查看在构建过程中是否弹出 GCM 凭据对话框?
  • 那么你现在可以让它工作了吗?

标签: git npm tfs-2015 npm-install


【解决方案1】:

问题的基本(重新)陈述:涉及npm install 的 TFS 2015 构建未完成,因为我配置的 Git 凭据管理器会定期要求服务用户重新进行身份验证,以便访问指定的存储库commit-ish

最简单的解决方案:删除 Git 凭据管理器并改用 store

> git config --global --unset credential.manager
> git config credential.helper store
> git clone http://my-tfs-machine:8080/tfs/DefaultCollection/TeamProject/_git/some-repo
Username for etc.: domain\user
Password for etc.: password

...瞧,那个特定的错误消失了。

请注意,这意味着userpassword 以纯文本形式存储在硬盘驱动器的某处,如果这不能作为您的域中的解决方案,您必须找到不同的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2014-11-26
    • 2016-02-21
    • 2018-11-04
    • 2016-06-18
    相关资源
    最近更新 更多