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]