BT

ThoughtWorksのMingleがビルド時間を改善

| 作者: Savita Pahuja フォローする 2 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年3月20日. 推定読書時間: 2 分 |

原文(投稿日:2015/02/28)へのリンク

Mingleの継続的インテグレーションには現在,1回のビルドに40分を要する – ThoughtWorksのソフトウェアコンサルタントであるSudhindra Rao氏は,先日のブログ記事にこう書いた。

MingleはJRubyを使って,Java上で動作します。このような最上級のテクノロジでも,MingleのCIビルドにはまだ40分掛かるのです。これは改善の結果であって,私たちはこれで満足しています。

Mingleのこのビルドでユニークなのは,すべてのテストを実行した上で成功を宣言している点だ,と氏は言う。40分というのは,すべてがパスするための合計時間なのだ。ThoughtWorksでは,もっと高速なビルドが可能だと考えている。

氏は,継続的デリバリのツールとして,gocdを導入する予定だという。gocdを使うことで,パイプライン構造が自由に設定可能となり,構成のスケールアップが実現できるからだ。氏らはgocdビルドパイプラインを積極的に並列化して,これらのテストを1時間以内で完了できるようにしている。

gocdを使ったテストの並列化には,かなりの時間を投資しました。 旧世代のジェネレーションテストの分割方法は,簡単なものですが,自社開発した並列化戦略を備えていました。私たちはTLB(Test Load Balancer)を導入して,これをより堅牢で,なおかつ自動化されたテスト分割および分配方法にリプレースしたのですが,それによって私たちのテストに存在する依存関係が明らかになりました。この依存関係を解消してテストをクリーンアップし,TLBで実施する上で適切な - 実行順序や副作用,環境などに依存しないものにするためには,かなりの時間が必要でした。この並列化のおかげで,以前から望んでいたクリーンなテストが実現したのです。それと同時に,エージェントの数を増やして,ビルドパフォーマンスをさらに引き出すこともできました。現在ではユニットテスト,機能テスト,受け入れテストなどは,すべて並列的に実行できるようになっています。

ThoughtWorksでは受け入れテストについても,別のツールを選択してその一部をリプレースした。新たに作成あるいは書き換えを行うテストについては,capybarawebdriverを利用するようにした。また,意図が不明確と思われる受け入れテストについては,徐々に削除ないし非推奨としている。さらに,機能を簡明に表現できていないテストをRSpecで書き直した。RSpecはRubyプログラマを対象とした,振る舞い駆動の開発ツールである。

この作戦で,非常に大きな成果を上げることができました。この活動を続けていけば,ビルドをさらに高速化できるのは間違いないでしょう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT