在TFS 2015(" XPlat")版本中,npm install
步骤一直挂起,直到超时。已尝试超时10分钟,20分钟和30分钟。
npm install
将package.json
文件中定义的本地依赖项作为commit-ish引用获取,例如
"ui-core": "git+http://tfs:8080/tfs/DefaultCollection/etc/_git/ui-core"
我认为导致问题的是那些依赖项,因为有时当我登录构建服务器(作为服务帐户)并手动键入npm install
时(在构建的目录中超时), Git Credential Manager提示我进行身份验证。但是,依赖项不是可选的。
(事件日志中和构建日志中不存在其他错误。)
我们正在使用TFS托管的Git,它需要域级别身份验证(Kerberos)。我们在大多数环境中都会Git Credential Manager处理此问题(有些人建议使用winstore
;请注意git-credential-manager
替代winstore
和{{1} }不是一个选项,因为TFS)。但是,身份验证也不是可选的(业务要求)。
另外,请注意:我们正在运行TFS 2015 Update 3,因此该更新解决的wincred
问题可能不是原因(是的,所有构建代理都已更新)。编辑:这里有一个答案建议使用SSH,我完全支持它作为一般可行的解决方案,但它已被删除。我认为在我们的案例中,问题是所有开发人员都必须创建并上传SSH公钥认证令牌。
还有其他人遇到过这个问题吗?我找不到容易解决的问题吗?我不知道任何其他凭据管理员会做得更好,我也不知道为什么首先会丢弃身份验证(或者如果有这样的话,我就会知道这个问题。' m缺失),并且没有将存储库的副本保存在另一个手动更新的共享上(不是更好!)我无法找到一个好的解决方案。
答案 0 :(得分:2)
问题的基本(重新)声明:涉及npm install
的TFS 2015版本未完成,因为我已经配置的Git Credential Manager会定期要求服务用户重新进行身份验证以访问存储库由commit-ish指定。
最简单的解决方案:删除Git Credential Manager并改为使用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
......瞧,那个特殊的错误消失了。
请注意 ,这意味着password
的{{1}}以明文形式存储在硬盘驱动器的某个位置,如果没有作为您域中的解决方案,您必须找到另一个解决方案。