ビルドの設定は、ビルドツール側 or CIツール側?

このブログのタグも取りとめが無さ過ぎるんで、そろそろ整理したいと思っている今日この頃です。今日は、ビルド/CIの設定について、考えたことを。


業務でもプライベートでも、Hudson熱があがっている最中です。Hudsonの便利なところの一つに豊富なプラグインがあるとは思いますが、このHudsonプラグインで実現できることと、ビルドツールで実現できることで重複している部分も多々あります。例えばSCPに関して言えば、HudsonのSCP plugin - hudson - Hudson Wikiと、Antでの404 Not Found/Mavenscpを使ってデプロイするとか。

同じことが実現できるのなら、どう使い分ければいいのか?というのをちょいちょい考えますよね。というわけで、独断と偏見で自分なりの指針を表にまとめてみました。

特徴 ビルドツール(Ant or Maven Hudson*1
設定の容易さ △(テキストベース) ○(GUIベース)
バージョン管理 ○(Diffも取り扱いやすい)
ローカル環境でのビルド ×

設定の容易さは、HudsonではGUIでごにょごにょできるんでやっぱりやりやすい。AntとかMavenは基本的にはテキストベースでビルドの設定をしていかなければならないので、若干敷居が高いです。

上記の裏返しでしょうが、バージョン管理という点ではテキストベースのビルドツールの方がしっくりきます。テキストなので、Diffも取りやすいですし。Husdonについては、設定ファイル自体はXMLで記述されているので、そのXMLファイルをSubversionなどでバージョン管理することも一応可能でしょう。やったことないですがw

また、ソフトウェア開発に際して、開発者個人の環境でビルドを実行したい場合も当然あります。こういった場合にビルドツールでのビルド環境が整備されていれば、個人ローカルの環境でビルドすることも容易になります。Hudson側でビルドの設定がされていると、ソースがコミットされるまでビルドされません。


結論としては、複雑な設定になりがちでバージョンをしっかり管理しておきたい場合や、ローカル環境で頻繁にビルドを行う必要がある場合はビルドツール側で、ちゃちゃっとビルドの設定をしたい場合はHudson側でやればいいのかなと。

*1:CIツールは他にもCruiseControlとかもあるけど、まじめに使ったことがないんで割愛