Windows 2012 R2 x64で実行されているJenkins(2.0 Beta-2)サーバーがあり、TFS GIT(2013)からソースファイルを取得するように新しいビルドが構成されています。 GIT CLIとTFS GITの間の認証の問題を解決すると主張しているMicrosoftが提供するWindowsバージョンの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構成変数を完全に設定解除することが答えでした。 Git 2.5.0から2.8.4にアップグレードした後、ジョブはまったく同じ場所で停止し、Jenkinsサービスはローカルシステムとして実行されているため、次のようにして変数の設定を解除します。
git config --global --unset credential.helper
git config --system --unset credential.helper
再起動やアンインストール/再インストールは必要ありませんでした。その後、Gitからのビルドが成功しました。
Jenkins Gitクライアントプラグインは、設定されている GIT_ASKPASS 変数に依存しているようです。これは、資格情報ヘルパー documentation に従って、資格情報ヘルパーが定義されていない場合に使用されます。
しばらく調べたところ、正しいバージョンのGit for Windowsを使用していないことがわかりました。 Windowsの「標準」Gitは、主にKerberosサポートがないために、TFS GITではうまく機能しないことがわかっています。私は正しいバージョンを使用していたと思いましたが、そうではありませんでした。
ビルド環境のセットアップの一環として、Visual Studio 2015をインストールしました。これに加えて、Git for Windowsの非互換バージョンがインストールされます。 TFS GITを使用しない(私は本当に理由がわかりません!)。 Git Credential Manager for Windows をインストールした後でも、インストールされたGITバージョンは互換性のないバージョンのままです。
要するに、GITとGCMの両方を手動でアンインストールし、GCMのみをインストールする必要がありました。これにより、インストール中にGITクライアントの正しいバージョンがインストールされます。
その後、サーバーを再起動すれば、「魔法のように」機能するはずです。