Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hudson for Perl Project

Hudson for Perl Project

Kentaro Kuribayashi

November 20, 2010
Tweet

More Decks by Kentaro Kuribayashi

Other Decks in Technology

Transcript

  1. HudsonでPerlプロジェクトの継
    続テスト
    (株)はてな 栗林健太郎
    Kansai.pm #13 (2010/11/20)

    View Slide

  2. 自己紹介
    ●栗林健太郎
    ●id:antipop
    ●@kentaro
    ●Perler / Emacser

    View Slide

  3. 自己紹介
    ●(株)はてな勤務
    ●アプリケーションエンジニア
    ○はてなダイアリー
    ○新サービス
    ○etc.
    ● 文化系プログラマ担当

    View Slide

  4. 自己紹介
    ●ポリコムをPerlから動かしたり
    ○ 「PolycomをPerlから操作する」
    ●Acme::MorningMusumeの久々の更新
    に向けてアップを開始したり
    ○「モーニング娘。9期メンバーオーディ
    ション」

    View Slide

  5. 自己紹介
    ●天龍寺にいます

    View Slide

  6. アジェンダ
    ●継続テスト環境の必要性
    ●Hudsonを使おう
    ○Hudsonの導入
    ○テスト実行方法
    ○Tips
    ●まとめ

    View Slide

  7. テストできてる?
    ●一点の曇りもなく素晴しいテストを書く
    ぞ!!1
    ●開発が進むにつれて:
    ○仕様追加などで、テストが通らない、
    あるいはそもそもテストがない機能が
    増えてくる
    ○破滅……

    View Slide

  8. なぜそうなるか?
    ●そりゃ、テストを書く、テストを通してから
    コミットするってのは前提だけど……
    ●個人のやる気だけでやると破綻
    ●自動的に、誰からでも見えるようにテス
    トが実行される必要性

    View Slide

  9. テストの自動化
    ●個人は普段のサイクルで開発
    ○開発→テスト→コミット
    ●あとは自動的にテストが勝手に行われ

    ●さらに、ツールが表示する結果がビジュ
    アルで美しいと、それを乱したくないとい
    う気持ちが働く

    View Slide

  10. テストツールの要件
    ●Perlプロジェクトのテストに使える
    ●導入が簡単
    ●テスト実行のタイミングを柔軟に設定で
    きる
    ●結果の通知方法を柔軟に設定できる
    ●テスト結果の表示がビジュアルできれい

    View Slide

  11. Hudson

    View Slide

  12. Hudson
    ●Java製のCI(Continuous Integration)環

    ●インストール、設定が簡単
    ●柔軟な設定が可能
    ●豊富な拡張機能

    View Slide

  13. Hudson
    ●実行タイミングいろいろ
    ○cronぽいスケジューラ
    ○SCMをポーリング
    ○コミットフックで通知

    View Slide

  14. Perlから使うには?
    ●シェルコマンドを実行できる
    ○proveすればいい
    ●JUnit形式で結果を吐いておけば、テス
    ト結果を集積できる
    ●具体的な設定は後述

    View Slide

  15. Perl + Hudsonを試してみる
    ●SCMはgit
    ●普通のPerlプロジェクト
    ○proveでテスト実行

    View Slide

  16. Hudsonインストール・起動
    ●$ wget http://hudson-ci.
    org/latest/hudson.war
    ●$ java -jar hudson.war
    ●http://localhost:8080/にアクセス

    View Slide

  17. Gitプラグイン導入
    ●「Hudsonの管理」 → 「プラグインの管
    理」にアクセス
    ●「利用可能」タブの中のGitプラグインに
    チェックを入れて、インストール

    View Slide

  18. プロジェクトの追加

    View Slide

  19. プロジェクトの概要

    View Slide

  20. Gitリポジトリの設定

    View Slide

  21. テストのスケジューリング

    View Slide

  22. テスト実行のしかた

    View Slide

  23. テスト結果の集計

    View Slide

  24. テストの実行
    ●とりあえず実行するには「ビルド実行」を
    クリック
    ● 定期実行するには、前述の「設定」→
    「ビルド・トリガ」
    ●API経由でビルドをキックすることもでき
    ます

    View Slide

  25. コミットフック
    ●Gitリポジトリへのpushをトリガにテストを
    実行
    ○SCMのポーリングよりリアルタイム
    ●特定のURLにリクエストを送るだけ
    ○ http://${hudson}/job/${project}/build

    View Slide

  26. REST API
    ●新規プロジェクトの作成、既存ジョブか
    らのコピー
    ●登録されているジョブの情報を取得
    ●プロジェクトに関するビルド一覧
    ●それぞれのビルド詳細
    ●ビルドの実行
    ●Hudsonサーバのリスタート

    View Slide

  27. hudson-cli
    ●Hudsonサーバ/プロジェクト/ジョブに関
    する様々な操作
    ●Groovyスクリプト/Groovyシェルで
    Hudsonサーバの内部状態を操作

    View Slide

  28. テスト結果を受け取る
    ●メール
    ●IRC

    View Slide

  29. テスト結果を受け取る
    ●Hudson Tracker
    ○http://hudsontracker.sourceforge.
    net/

    View Slide

  30. テスト結果の集計

    View Slide

  31. 安全なテスト実行ために
    ●Test::mysqld
    ○テスト実行時にDB/table作成
    ○テストデータのロード
    ●DBIx::RewriteDSN
    ○確実に、テスト用DBにアクセスするよ
    うに

    View Slide

  32. Hudsonを実運用する
    ●各OS用のパッケージが用意されていま
    す。
    ●CenoOSでのやり方についてはブログ
    に書いた
    ○http://d.hatena.ne.
    jp/antipop/20101119/1290180195

    View Slide

  33. まとめ
    ●Hudsonで継続テスト環境を作ろう
    ○誰からでもわかる可視化重要
    ○導入はとても簡単
    ●テスト結果を確実に受け取れるようにし
    よう
    ●安全なテスト実行ができるようにしよう

    View Slide

  34. ご静聴ありがとうございました。
    質問がありましたらお気軽に!!1

    View Slide