Skip to content

Instantly share code, notes, and snippets.

@omasanori
Last active July 16, 2023 08:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save omasanori/7959952 to your computer and use it in GitHub Desktop.
Save omasanori/7959952 to your computer and use it in GitHub Desktop.
msgpack-rustをrustpkg化してTravis CIで継続的インテグレーションする話

msgpack-rustをrustpkg化してTravis CIで継続的インテグレーションする話

表題の通りです。

msgpack-rustとは

msgpack-rustMessagePackのRustによる実装の一つで、私が書いたものです。まだ実装していない機能が多いです。はい、がんばります。

これの大部分は夏頃に書いたコードなのですが、3ヶ月半ほど言語の変更に追随しなかった結果、 500行以上書き換えることになりました。pre-1.0の言語らしいエピソードと言えます。

rustpkg

Rustには独自のビルドシステム兼パッケージシステムがあります。それがrustpkgです。こちらの対応はほとんどできていたのですが、どう解決して良いかわからない問題が一つあったのでMLに投稿したところ、2分で答えが返ってきました。よくある質問だったようです。申し訳ないことをした……。

Travis CI

さて、めでたくmsgpack-rustは最新のRustでrustpkgを使ってビルドできるようになりましたが、しばらくの間は言語仕様に破壊的な変更が加わるでしょう。また、msgpack-rustも(やる気を補充したので)大きな変更が加わることになります。こんなとき便利なのが継続的インテグレーションです。

Travis CIは今のところRustを公式にはサポートしていません。なので、msgpack-rustの.travis.ymlに書かれている通り、Travis CIでRustのプロジェクトをビルドする際にはPPAからRustのナイトリービルドを入手します。ただし、このPPAはRustチーム自体が管理しているものではありません。PPAの信頼性は保証されていない点に留意しましょう。

Rust CI

こうしてmsgpack-rustはTravis CIの恩恵を受けることができるようになりました。しかし、この時点ではmsgpack-rustの変更をきっかけにビルドが始まることはあっても、Rustの変更をきっかけにビルドが始まることはありません。そこで、Rust CIに登録しましょう。これでPPAのRustパッケージが更新される度にリビルドが始まります。

おわりに

やっぱり継続的インテグレーションは素敵ですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment