Skip to main content
  1. Entry/

katsubushi v2.1.0 をリリースした

分散ID発番器である katsubushiv2.1.0 をリリースした。

といっても特に機能追加などはなく、開発用のセットアップ手段やビルド周りを更新しただけ。 以下、行った変更の簡単な説明。

latest タグを latest に #

今回の本命。 katsubushi は Docker Hub にもイメージを公開しているが、latest タグが付けられたものは実は最新ではなく、 6年前のバージョンである v1.5.3 だった。

今回の変更で、最新のイメージに latest タグが付けられるようになった。 このため今まで latest タグを使っていた環境ではいきなり最新の v2.1.0 に上がることになる。

とはいえこの変更で困る人はまずいないだろう。 katsubushi は主に Memcached プロトコルを提供するツールだが、 それらのインターフェイスは v1 系から v2 系になっても非互換はない。 v2 からは gRPC と HTTP のインターフェイスも追加されているが、 今まで latest で問題なく使えていたのであれば追加の対応は必要ない。

ライブラリとして提供されている関数のインターフェイスには変更がある1が。 イメージをそのまま使う分には影響はないだろう。

そもそも latest タグを使うということは、いきなり非互換な変更が入ってくるリスクを許容しているはずだ。 もし本番環境などで使っている場合はバージョンを、せめてメジャーバージョンだけでも固定する運用に変えてほしい。

ではなぜわざわざ latest タグを更新するようにしたのかというと、 以前の latest タグが付与されたイメージ(v1.5.3 相当)は multi platform に対応しておらず、 latest タグ指定で使っていたとある環境で毎回以下のような warning が表示されていたからである。

❯ docker run katsubushi/katsubushi:latest -version
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
katsubushi version: 1.5.3

そのとある環境もバージョン固定したのでわざわざ latest を更新する必要もなくなり、 結局は単に「latest なのに最新ではない」という気持ち悪さを解消したいがためのPRなのであった。

❯ docker run katsubushi/katsubushi:latest -version
katsubushi version: 2.1.0

すっきり。

開発用ツールを aqua で管理するように #

手元でちょっとビルドしてみるかと make all してみたところ、 手元の環境に protoc およびそのプラグイン類がなく失敗した。 該当するツールを入れればよいのだが、それらをいちいちインストールするのは面倒なので、 ツール類を aqua で管理するようにした。

ついでに protoc 関連は buf を使うようにした。 初回に make setup してから make all すればすぐビルドできるようになっている。

ビルドに使用する Go のバージョンを 1.24 系に #

最新化。 その前は 1.18 系だった。

tagpr の導入 #

リリースを楽ちんに。

ただ、tagpr から使用する GitHub Token には secrets.GITHUB_TOKEN を使っているので、 tagpr によりタグが作られてもリリース用の workflow が起動しないという問題がある。 Personal Access Token を使えば解決はするのだが、誰のものを使うのかという別の問題が生じる。 次回リリースするときに考えよう。

今回は手動でタグを push し直すことでお茶を濁した。

使用する GitHub Action を hash pin #

最近のお作法として。 hash での置き換えには pinact を使用した。

使用する goreleaser を v2 にアップデート #

最新化。

これも手元にある goreleaser v2 ではビルドできなかったというのが理由。

おわり #

上記の通り、アプリケーションには手を入れておらず、開発やビルド周りのアップデートのみを行った。

ちなみに、先日 https://github.com/kayac/go-katsubushi の outside collaborator に入れてもらったので、 軽微な変更はサクサクっとマージしてしまっている。 今の職場 のプロダクション環境でも katsubushi を使っているので、 リリースプロセスに絡めるのは悪いことではないだろう。