我有一台运行在Windows 2012 R2 x64上的Jenkins(2.0 Beta-2)服务器,其新配置被配置为从TFS GIT(2013)获取源文件。我已经安装了Microsoft提供的Git for Windows版本 - 声称可以解决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。我还尝试使用" store"来存储服务帐户凭据。来自GCM的命令,但它失败并出现一个奇怪的错误(使用它的语法非常混乱,所以我可能在尝试时做错了。)
答案 0 :(得分:43)
对我们来说,取消设置" credential.helper"完全是git config变量的答案。从Git 2.5.0升级到2.8.4后,我们的工作挂在完全相同的位置,我们的Jenkins服务作为本地系统运行,所以执行以下操作取消设置变量:
{{1}}
无需重启或卸载/重新安装。之后,Git的构建成功了。
Jenkins Git客户端插件似乎依赖于正在设置的GIT_ASKPASS变量,当没有定义凭据助手时,根据凭证助手documentation使用该变量。
答案 1 :(得分:2)
经过一段时间的挖掘后,我发现我没有使用正确版本的Git for Windows。 众所周知,"标准" Git for Windows与TFS GIT的合作并不好,主要是由于缺乏Kerberos支持。我以为我使用的是正确的版本,但我不是。
作为构建环境设置的一部分,我安装了Visual Studio 2015.除此之外,它还安装了一个不兼容的Git for Windows版本,这个版本不适用于TFS GIT (我真的不知道为什么!)。即使在安装Git Credential Manager for Windows之后,安装的GIT版本仍然是不兼容的版本。
长话短说:我不得不手动卸载GIT和GCM,只安装GCM - 然后在安装过程中安装正确版本的GIT客户端。
之后,只需重新启动服务器,事情就应该"神奇地"工作