概要
自分的に少しハマったので忘れないうちにメモメモ。
自作のモジュールを作っていて、それを利用するプログラムも書いていたとします。
モジュールの方に更新入れたので
$ git add . $ git commit -m "更新した" $ git push origin master $ git tag v1.1.1 $ git push origin v1.1.1
ってして、新しいバージョンをリリースしました。
んで、利用している側 (こっちは、一つ前のバージョンの v1.1.0 を使っているとします) で
$ go list -u -m all
ってしても、
path/to/module v1.1.0
って出てくる。。あれ、新しいバージョンをリリースしたので
path/to/module v1.1.0 [v1.1.1]
を期待していたのですが、、、。
$ go get -u path/to/module
ってしても何もでてこない。
えーって思って、
$ go get -u path/to/module@v1.1.1
ってやると、取得できて更新できる。でもこれがやりたいわけじゃない。
で、10分くらいすると
$ go list -u -m all path/to/module v1.1.0 [v1.1.1]
って出てきた。なんで? Go1.13にしてからこうなりました。
原因は GOPROXY に設定されている値
そういえば、Go1.13からモジュールのミラーリングサービスが正式稼働したとの情報をどっかで見た記憶。
んで、
見てみると、FAQに書いてあったw
I committed a new change (or released a new version) to a repository, why isn't it showing up when I run go get -u or go list -m --versions?
In order to improve our services' caching and serving latencies, new versions may not show up right away. If you want new code to be immediately available in the mirror, then first make sure there is a semantically versioned tag for this revision in the underlying source repository. Then explicitly request that version via go get module@version. After one minute for caches to expire, the go command will see that tagged version. If this doesn't work for you, please file an issue.
なるほど。なので、ちょっと反映されるまで時間がかかってたんですね。
$ go env GOPROXY
ってしてみると
https://proxy.golang.org,direct
ってなってました。納得。先にミラーサイト見るようになってる。
ミラーサイト経由しないように設定してみる
理由はわかったけど、自分のライブラリなので、リリースしたらすぐに反映されてほしい。
てことで、GOPROXYの値を変更してみます。こういうものは、先頭から順に見ていくようになっているので、最初のproxyサイトのurlがなくなれば、directなので直接見に行くようになるはず。
$ go env -w GOPROXY=direct
変更してから、ライブラリのバージョンをアップしてリリースしてみます。
$ git add . $ git commit -m "もいっかい更新した" $ git push origin master $ git tag v1.1.2 $ git push origin v1.1.2
その後すぐに利用している側のモジュールから
$ go list -u -m all
ってすると
path/to/module v1.1.1 [v1.1.2]
って出たー。。当然、go get -u
しても更新されました。
よく情報追いかけていれば、すぐに分かったことなんですが怠ると駄目ですねやっぱり。。
変更した GOPROXY をデフォルト値に戻す
go env -w
で変更した値を元に戻すには
$ go env -u GOPROXY
ってやります。これで、値がデフォルト値に戻ります。
参考情報
上のミラーリングサービス開始の公式ブログの内容を、とてもわかり易く説明してくださってました。助かりました。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場