我有一个在Windows 2012 R2 x64上运行的Jenkins(2.0 Beta-2)服务器,并配置了新版本以从TFS GIT(2013)获取源文件。我已经安装了Microsoft提供的Windows版Git,该版本声称可以解决GIT CLI和TFS GIT之间的身份验证问题。
我的.gitconfig看起来像这样:
[credential] helper = manager interactive = never validate = false integrated = true
Jenkins在服务帐户下运行,没有交互式会话。该服务帐户是构建服务器上本地管理组的成员,并且已正确配置为TFS上的贡献者。这里的问题是,当Jenkins构建开始时,它在以下命令中挂起:
git.exe -c core.askpass=true fetch --tags --progress http://my.tfs.server:8080/tfs/collection/_git/MyProject +refs/heads/*:refs/remotes/origin/*
在我看来,即使我已将其设置为使用git-credential-manager,它似乎仍然卡住,要求提供凭据。我也尝试过使用GCM中的“ store”命令来存储服务帐户凭据,但是它失败并出现一个奇怪的错误(使用它的语法非常混乱,因此在执行错误操作的同时可能会出错)尝试一下)。
对于我们来说,完全取消设置“ credential.helper” git config变量就是答案。从Git 2.5.0升级到2.8.4后,我们的工作挂在了完全相同的位置,并且我们的Jenkins服务作为本地系统运行,因此请执行以下操作来取消设置变量:
git config --global --unset credential.helper git config --system --unset credential.helper
无需重新启动或卸载/重新安装。之后,从Git构建成功。
Jenkins Git Client插件似乎依赖于设置的GIT_ASKPASS变量,根据未定义凭据助手的凭据助手文档,将使用该变量。