Go で GOPRIVATE を設定して社内などのリポジトリを利用する
2022-04-26 / Go
社内のリポジトリを利用しようとしたら上手くいかなかったので GOPRIVATE
を再設定したメモです。
GOPRIVATE がないとき
GitHub など一般公開されているリポジトリではなく、プライベートな社内のリポジトリを特に設定の無いまま利用すると以下のようなエラーが発生します。
$ go get -d -u private.example.com/org/repo.git
private.example.com/org/[email protected]: verifying module: private.example.com/org/[email protected]: reading https://sum.golang.org/lookup/private.example.com/org/[email protected]: 410 Gone
server response:
not found: private.example.com/org/[email protected]: invalid version: git ls-remote -q origin in /tmp/gopath/pkg/mod/cache/vcs/655ea47bcfb2077e93a7b1b9ef30d31628b7a37400856870331ac4d63aa3544e: exit status 128:
fatal: unable to look up private.example.com (port 9418) (Name or service not known)
https://sum.golang.org/lookup/private.example.com/org/[email protected]
がないよというエラーです。公開されたパッケージでは無いため sum.golang.org
では参照できない状態です。
GOPRIVATE があるとき
実行時やシェルの利用時などに環境変数で GOPRIVATE
を指定します。複数指定する場合にはコンマで区切って記述します。
GOPRIVATE=private.example.com,internal.example.com,...
指定したらちゃんと更新できました。
$ GOPRIVATE=private.example.com go get -d -u private.example.com/org/repo.git
go get: upgraded private.example.com/org/repo.git v1.0.0 => v1.1.0
注意するのは更新対象のパッケージがさらに別のホストのプライベートなリポジトリを利用している場合、そちらも設定する必要があるという点です。今回私はここで設定漏れがありなかなか上手く行かないと悩んでいたのでした。