msgpack-rustをrustpkg化してTravis CIで継続的インテグレーションする話 ==================================================================== 表題の通りです。 msgpack-rustとは ---------------- msgpack-rust_\ は\ MessagePack_\ の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パッケージが更新される度にリビルドが始まります。 おわりに -------- やっぱり継続的インテグレーションは素敵ですね。 .. _MessagePack: http://msgpack.org/ .. _msgpack-rust: https://github.com/omasanori/msgpack-rust .. _rustpkg: http://static.rust-lang.org/doc/master/tutorial-rustpkg.html .. _`500行以上書き換えることになりました`: https://github.com/omasanori/msgpack-rust/compare/df80989ea9ec99ea1b1e5d8c9142aaacffcd57c5...b06c58d013d01065da89a7c21f38ae20bf2fcadd .. _`msgpack-rustの.travis.yml`: https://github.com/omasanori/msgpack-rust/blob/master/.travis.yml .. _`Rust CI`: http://hiho.io/rust-ci/