최근 사무실에서 사용하고 있는 GitHub 레포지토리의 사이즈가 너무 커졌는지 git clone 시에 "error: RPC 실패; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated."라는 에러가 계속 발생하고 있습니다.
이 경우에 대한 솔루션은 구글에서 어렵지 않게 검색할 수 있고 해결할 수 있습니다. 아래 링크는 로컬에서 이런 문제가 발생했을 때 조치할 수 있는 방법에 대한 충분한 솔루션을 담고 있습니다.
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 에러가 발생할 소지가 있기는 합니다.
이상입니다.
'SW개발' 카테고리의 다른 글
윈도우 파워쉘 한글 깨지는 문제 해결 방법 2가지 (0) | 2022.08.29 |
---|---|
스마트폰으로 문자 전송 방법 (termux-sms-send 명령시 "Sending SMS is no longer permitted by Google") (0) | 2022.07.29 |
[Git] stderr: error: failed to write new configuration file .git/config.lock (0) | 2022.07.29 |
[Git] git checkout 시에 "error: pathspec 'branch_name' did not match any file(s) known to git" 해결 방법 (0) | 2022.06.24 |
[SonarQube] 리눅스용 build-wrapper 다운로드 URL (0) | 2022.06.15 |
Jenkins 계정으로 쉘을 실행시키는 방법 (sudo su jenkins -s /bin/bash) (0) | 2022.06.15 |
[우분투] BeyondCompare 설치 방법 (0) | 2022.05.27 |
네이버 클로바 나눔 손글씨 폰트 모두 다운로드 받는 방법 및 링크 (0) | 2022.05.23 |