katsubushi v2.1.0 をリリースした
Table of Contents
分散ID発番器である katsubushi
の v2.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 を使っているので、 リリースプロセスに絡めるのは悪いことではないだろう。