SSブログ

Go Modules でバージョン設定 [日記]

自分が以前からメンテナンスしている Go言語のパッケージをバージョンを設定したくなった。依存パッケージのバージョン番号を指定する仕組みが 1.11 とか、最近の Go言語でできたらしく、バージョンが設定してあると、最近の Go 言語にキャッチアップしてますよ感が出せる。

Go Modules というやつで依存パッケージのバージョン指定したり、自分のパッケージにバージョンを設定するらしい・・・ということは分かったんだが、検索して調べてみてもよくわからん。
ブログ記事見ても go mod init して、 go.mod と go.sum を作るあたりで終わってる。
そうじゃなくて、僕は自分のパッケージにバージョンを設定したいんだが。

・・・と思って悩んでしたが、結局、公式ブログの一連の記事を読むのが良さそう

- https://blog.golang.org/using-go-modules
- https://blog.golang.org/migrating-to-go-modules
- https://blog.golang.org/publishing-go-modules
- https://blog.golang.org/v2-go-modules

go mod init example.com/hello を実行すると go.mod ファイルができる。
go test とか、 go build とかで go.mod に依存パッケージとそのバージョンが書かれ
go.sum というファイルに、依存パッケージのハッシュ値が書かれる。

依存パッケージのバージョンが上がっていくと、 go.sum の依存パッケージのハッシュ値が追加されていく

go mod tidy で、go.sum の使われていない依存は消される

パッケージにバージョンを指定したい場合、tagをつける
git tag v1.0.0
git push origin v1.0.0

Breaking change を含むバージョンアップをする場合は https://blog.golang.org/v2-go-modules によると
mkdir v2
cp *.go v2/
cp go.mod edit -module example.com/hello/v2 v2/go.mod
git tag v2.0.0
vit push origin v2.0.0
v2 っていうディレクトリ掘って、そっちで開発して v2.0.0 の場合
"example.com/hello" で v1の API で "example.com/hello/v2" で v2 の API でアクセスできるようにする。
・・・というふうにしよう、ということらしい。

結局、バージョン番号は、git tag で設定すればいい模様。
コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント