Hudson for Perl Project

Hudson for Perl Project

23f4d5d797a91b6d17d627b90b5a42d9?s=128

Kentaro Kuribayashi

November 20, 2010
Tweet

Transcript

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

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

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

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

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

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

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

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

  9. テストの自動化 •個人は普段のサイクルで開発 ◦開発→テスト→コミット •あとは自動的にテストが勝手に行われ る •さらに、ツールが表示する結果がビジュ アルで美しいと、それを乱したくないとい う気持ちが働く

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

  11. Hudson

  12. Hudson •Java製のCI(Continuous Integration)環 境 •インストール、設定が簡単 •柔軟な設定が可能 •豊富な拡張機能

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

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

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

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

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

  18. プロジェクトの追加

  19. プロジェクトの概要

  20. Gitリポジトリの設定

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

  22. テスト実行のしかた

  23. テスト結果の集計

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

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

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

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

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

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

  30. テスト結果の集計

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

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

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

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