web-dev-qa-db-ja.com

認証の問題によりフェッチでスタック

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」コマンドを使用してサービスアカウントの認証情報を保存しようとしましたが、奇妙なエラーで失敗します(これを使用する構文は非常に混乱しているため、間違えている可能性がありますそれを試す)。

8
Fabricio

私たちにとっては、「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 に従って、資格情報ヘルパーが定義されていない場合に使用されます。

44
Nick Jones

しばらく調べたところ、正しいバージョンの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クライアントの正しいバージョンがインストールされます。

その後、サーバーを再起動すれば、「魔法のように」機能するはずです。

2
Fabricio