Jenkinsから特定のリポジトリをrepo sync/git cloneすると失敗する
とある(サイズがかなり大きい)リポジトリを含んだプロジェクトに対して"Jenkins上から"repo syncを実行したところ以下のエラーが発生し失敗してしまいます。
Cloning into 'repo_name'...
Connection to xxx.xxx.xxx.xxx closed by remote host.
fatal: The remote end hung up unexpectedly
jenkinsからの実行ではなく、同じマシンのプロンプト上から実行した場合は問題なく成功いたします。
また、このリポジトリ以外(サイズ小さめ)はjenkins上からの実行でも成功しています。
このリポジトリに対して同様にJenkins上からgit cloneをかけても同様エラーで失敗します。
以下などを参考にバッファサイズを変更したりしてみましたが、現象変わらずでRPCやnginxのエラーメッセージは表示されておりません。
https://stackoverflow.com/questions/6842687/the-remote-end-hung-up-unexpectedly-while-git-cloning
しかしながら
調査の為にgit cloneに--progressオプションを付与してみたところ何故かjenkinsからの取得でも成功してしまいました。
repo syncコマンドを解析してみたところ、非TTY状況であるとrepo sync内部で実行しているgit fetchに--progressを付与しないようにしているようのでこの点からも辻褄があいそうです。
質問内容といたしましては
・何故非TTY環境だとサイズの大きいリポジトリ時に失敗してしまうのか
・上記状況でも--progressを付与すると成功するのはなぜか
・(repo syncの中身は弄れないので)--progressなしでもjenkins上から成功できる方法はあるか
となります。