GOPRIVATE을 통해 개인/사설 도메인에서 go get 하기(Gitlab, Github enterprise)

go get

go 기반 어플리케이션들을 사용해보셨거나 go 언어로 개발을 한다면 go get 은 매우 익숙한 명령이라고 생각합니다.

이는 github 등 원격 repo에서 패키지를 다운로드 받는 명령이고, pkg.go.dev에서 보이는 데이터를 기준으로 go package에 대한 정보와 코드 데이터를 받아오게 됩니다. (그래서 간혹 github에 반영해도 go get으로 바로 적용되지 않는 이슈가 있죠. 이것도 몰라서 이 때 엄청 삽질했네요)

어쨌던 회사 내부 URL(gitlab이나 github enterprise 등)에서의 패키지는 pkg.go.dev에 등록될 수 없기 때문에 일반적인 go get 방식으로 다운로드가 불가능합니다. 이는 go module 에서도 동일합니다. 그래서 GOPRIVATE이나 GONOSUBDB, GOPROXY 등을 통해서 이러한 체크 과정(Proxy, Checksum)들을 무시하고 직접 다운로드를 수행할 수 있습니다.

GOPRIVATE

GONOSUBDB+GOPROXY = GOPRIVATE 입니다. ENV에 GOPRIVATE에 체크를 무시할 URL을 넣어줄 수 있고, 이에 내부 주소 등을 넣어주는 경우 체크 과정을 패스하고 바로 다운로드를 할 수 있게 됩니다.

GOPRIVATE=*.your-priavte-url go mod download;

-insecure option (deprecated)

안쓸까 하다가 그래도 알고 있으면 나쁘지 않은 내용이라 같이 추가합니다. 기존에는 go get 시 -insecure flag를 이용해서 위 과정과 동일하게 받을 수 있었습니다. 다만 이 flag는 deprecated 되었으니 가급적이면 안쓰시는걸 추천드립니다.

go get -insecure [private_url]