SW개발

[Jenkins] git clone시에 error: RPC 실패; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.

공무원 봉급 2022. 6. 15. 15:14

최근 사무실에서 사용하고 있는 GitHub 레포지토리의 사이즈가 너무 커졌는지 git clone 시에 "error: RPC 실패; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated."라는 에러가 계속 발생하고 있습니다.

이 경우에 대한 솔루션은 구글에서 어렵지 않게 검색할 수 있고 해결할 수 있습니다. 아래 링크는 로컬에서 이런 문제가 발생했을 때 조치할 수 있는 방법에 대한 충분한 솔루션을 담고 있습니다.

 

[Ubuntu] git clone 시에 "RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated." 에러

개요 최근에 git clone 시에 지속적으로 에러가 발생하여 무척 성가셨습니다. 구글 검색을 통해서 시도해본 솔루션들이 연달아 실패하곤 했지요. 대부분의 솔루션들은 git config 명령을 통해서 설정

frankler.tistory.com

 

git clone --depth 옵션을 이용

위의 기사에서 다양한 솔루션을 제공하고 있지만, 가장 손쉽게 해결할 수 있는 방법은 git clone 명령시에 --depth 옵션을 이용하는 방법입니다.

git clone --depth=1 http://abc.def.ghi

제 경우는 --depth 옵션으로 손쉽게 이 문제를 회피할 수 있었습니다. 하지만 Jenkins 상에서 이런 문제가 발생하면 어떻게 해야 할까요? Jenkins의 경우 git clone 시에 파라미터를 명시적으로 넣기가 어렵습니다. 물론 job이 실행되는 시점에 쉘 명령을 통해서 clone도 가능하지만, 소스 코드 관리 텝에서 git repository를 설정했을 경우 이 부분을 쉘 스크립트로 빼기가 제한됩니다. 크레덴셜 관련된 이슈도 있구요.

 

Jenkins에서 문제 해결 방법

"Advanced clone behaviours" 설정을 추가하는 것으로 depth를 줄일 수 있습니다. 이를 통해서 clone 속도도 빠르게 할 수 있고, 더불어서 TLS 에러도 회피할 수 있습니다.

 

"Advanced clone behaviors"에서 "Shallow clone" 체크 박스를 활성화시키고 저장하시면 됩니다.

 

Swallow 옵션을 제거하는 방법

"Swallow clone"으로 레포지토리를 클론한 상태에서는 원하는 브렌치가 commit 이력을 살펴보는게 불가능합니다. 이 때는 아래의 명령으로 unshallow 할 수 있습니다.

$ git fetch --unshallow

위의 명령을 통해서 shallow를 해제하면 모든 브렌치와 커밋 히스토리를 살펴볼 수 있습니다. 물론, 이 과정에서 다시 TLS 에러가 발생할 소지가 있기는 합니다.

 

이상입니다.