我有一个在 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 在服务帐户下运行,没有交互式 session 。此服务帐户是构建服务器上本地管理员组的成员,并已正确配置为 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 配置变量就是答案。从 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正在设置的变量,根据凭证助手 documentation在没有定义凭证助手时使用。
关于git - 由于身份验证问题卡在提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36479201/