============================ エキPy読書会 11 (2011/5/17) ============================ :日時: 2011/5/17 20:00 - 22:00 :範囲: 8章(p221~): コードの管理 エキスパートPythonプログラミングの読書会11回目。 今回はMercurialHGとBuildbotの話でした。HGと他のDVCSの比較や、BuildbotとJenkinsの対比など情報交換しました。相変わらず本を読まない読書会ですね。 質疑応答(覚えてる範囲) ======================== * Q: 大規模なリポジトリ(数GBとか)の clone はどうするの? * A: git はメモリを食い潰して落ちることもあるらしい、Mecurial は大丈夫だった?プロジェクトを目的毎に分割したりして、大規模にならないようにする戦略が良いかも? * Q: Mercurial の複数ヘッドはどう運用するの? * A: Mercurial は1つのbranchに複数のヘッドが作成される(gitとは異なる仕組み) * 複数のヘッドから merge するとそれぞれの parent が見れる * hgrc の extensions を設定すると hg glog でグラフが見れる * hg serve でサーバ上でグラフが見れる * Q: ブランチ作って、いらなくなったら削除するの? * A: 削除はできない * hg ci --close-branch でクローズはできる * hg branches -a でアクティブなブランチだけ見せることもできる * Q: 質問忘れた * A: bootstrap 実行して、buildout して、環境構築から走らせる、環境構築するだけでテストの価値はあるよ * Q: 質問忘れた * A: buildbot はコマンドを送りつけて実行する * buildout は make するのと同じ * Q: buildbot はやっぱり難しいの? * A: Jenkins の用途と buildbot の用途は違う * Jenkins はもともと単一プラットフォーム/バージョンで簡単にテストするような使い方で、操作のインテグレーションやビジュアルが良い * Jenkinsの開発者は多いのでもそのうち buildbot の長所もカバーするかも? * buildbot の開発は少人数、CUI 系の設定しかない(長所であり短所でもある) * Q: Plone のテストとかはどうするの? * A: ビルドスレーブはプラットフォーム単位で分かると良い * テストの負荷分散目的でビルドスレーブを分けるのも良い * Q: Jenkins でプラットフォームごとのテストはできる? * A: マスターサーバから各環境にsshで接続してできる * ビルドスレーブからマスターにつなぎに行くbuildbotとは主従関係が逆 * Q: buildbot で GUI やインタフェース系のテストはできる? * A: できる、SeleniumRCを使えばWeb アプリのテストも可能 * pywinauto でボタン押したりのテストもできる * Q: JS のテストはできる? * A: JSUnitとか、Seleniumとか、いろいろあるよ * 出来るけど、buildbotの仕事ではないのでSeleniumRC等で外だしする方式で。 * Q: socket のテストとかはどうするの? * A: ホワイトボックステストでソケットのダミーを立ち上げて、入出力を比べるなど * もしくは、実際のソケット通信を記録しておいて、それを使ってテストすると、テストデータ作成の手間も省けて良さそう 参考 ====== * ATND: http://atnd.org/events/15133 * Togetter: http://togetter.com/li/136981