JenkinsでJava/PHP/Ruby/JavaScriptをビルドするをビルドするWeb技術勉強会 2012/01/14Ryuichi TANAKA(@mapserver2007)
CI(継続的インテグレーション)• 品質を継続的に確保するための手法• XP(エクストリームプログラミング)の一つ• ビルド、テスト、インスペクションを継続的に自動的に実施動的に実施• CIをサポートする言語、ツールが増えつつある
Point of SalesとPoint of Usehttp://www.sonicgarden.jp/
Point of Sales• Point of Sales– システム、アプリを売った時点が最高品質– ウォーターフォールモデルで主に発生– それ以降は品質が低下し続ける– それ以降は品質が低下し続ける• 品質低下を防ぐために保守対応、障害対...
Point of Use• Point of Sales– 現在が常に最高品質– アジャイル開発モデル– ツールなどを駆使して可能な限り自動化することが常識な世界常識な世界• テスト、ビルド、デプロイ、CIなど。人間による試験以外は自動化– W...
CIをやる意味• 効率的な開発プロセスを学ぶ– 手元の環境だけではなく、共通の環境(サーバ)場でテスト、ビルド– レポートが可視化される– レポートが可視化される– なにかあったら(デグレードなど)すぐ分かる• 品質向上の意識が高まる– 否応な...
Jenkinsとは• 最も人気のあるCI(継続的インテグレーション)ツール• 豊富なプラグイン• 開発者は日本人• 開発者は日本人• Java製
Jenkinsでやるべきこと• 必須– ユニットテスト• やれたらやりたい– 糞コードチェック– 糞コードチェック• PMD, CheckStyle, CPD– カバレッジ• やってもやんなくてもいい– メール通知、Growl通知
Javaプロジェクトをビルド• 省略– そこいらに情報があるので調べてくれ。腐るほどある。
PMDとかCheckStyleは面倒なんでやってません。ガチで作るときはちゃんとルールの定義からやりましょう。
PHPプロジェクトをビルド• PHPもJava並にビルド環境が揃ってる• しかも情報がそれなりに豊富– Javaには及ばないが• PMD、CPDなども実用レベルなのでPHPと• PMD、CPDなども実用レベルなのでPHPとJenkinsはかなり...
PHPMD• PHP版PMD– バグがありそうなところやコード的におかしい部分をソースレベルで指摘してくれる。• 黄色– 弱い警告。結構出る。– 弱い警告。結構出る。– 全部直すのはけっこうきつい。– 個人的には目をつぶる• 赤– 強い警告。あ...
インストール$> sudo pear install phpunit/phpcpd$> sudo pear install phpunit/phpcpd
PHPCPD• コード重複をチェックする– 例えば同じようなif文が連発する、など• 閾値で調整できる• 普通に書いていればまず出ない• 普通に書いていればまず出ない
インストール$> sudo pear install phpmd/PHP_PMD$> sudo pear install phpmd/PHP_PMD
PHPUnit• ご存知ユニットテストフレームワーク– 他のFWでもいけるかもしれないが、PHPUnitが一番無難で楽
インストール$> sudo pear install phpunit/PHPUnit$> sudo pear install phpunit/PHPUnit
Phing• PHP版Ant– Antと使い方もほとんど同じ• Phing+build.xmlでビルド• サンプル• サンプル– https://gist.github.com/1589175
Jenkinsでビルドするには• レポートファイルが必要• build.xmlを使うと以下のファイルが生成される(名前は独自に変更可能)– pmd.xml– pmd.xml– cpd.xml– phpunit.xml• これらをJenkinsに...
Rubyプロジェクトをビルド• 情報がほとんどない• 実戦投入するのはきついかも– 特にRails• 今のところRspec/TestUnitで自動テストするこ• 今のところRspec/TestUnitで自動テストすることしかできていない– 知ら...
RubyプロジェクトをJenkisビルド• 用意するもの– ci-reporter• gem install ci-reporter– Rakefile– Rakefile• Jenkinsから呼び出す• テスト– RSpec– Test::U...
Rakefileでビルド・Rakefilerequire rspec/core/rake_taskrequire ci/reporter/rake/rspecRSpec::Core::RakeTask.new(:spec => ["ci:set...
JavaScriptプロジェクトをビルド• 情報はほとんどない• しかも何パターンかある– JsUnit、mocha、QUnit etc.• しかし、結局はテストしてJUnit形式のxml吐か• しかし、結局はテストしてJUnit形式のxml吐...
JavaScriptでJenkinsビルドする手順• 用意するもの– node.js– QUnit• https://github.com/jquery/qunit• https://github.com/jquery/qunit– QUnit...
コマンドで実行prove --ext=test.js --exec=node -l test --harnessprove --ext=test.js --exec=node -l test --harnessTAP::Harness::JUnit
Antで実行ant runant run
Antで実行ant runant run
Antスクリプト• https://gist.github.com/1609681
まとめ• アジャイル開発では必須のプロセス「CI」– 特にJenkinsは注目を集めている• 自動化を追求– テストの自動化は当たり前のように行われている– テストの自動化は当たり前のように行われている• テスト自動化を自動化– 手動でテスト実...
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Upcoming SlideShare
Loading in …5
×

Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする

4,575 views

Published on

JenkinsでJava/PHP/Ruby/JavaScriptプロジェクトをビルド。Javaは省略してます。

0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,575
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
18
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする

  1. 1. JenkinsでJava/PHP/Ruby/JavaScriptをビルドするをビルドするWeb技術勉強会 2012/01/14Ryuichi TANAKA(@mapserver2007)
  2. 2. CI(継続的インテグレーション)• 品質を継続的に確保するための手法• XP(エクストリームプログラミング)の一つ• ビルド、テスト、インスペクションを継続的に自動的に実施動的に実施• CIをサポートする言語、ツールが増えつつある
  3. 3. Point of SalesとPoint of Usehttp://www.sonicgarden.jp/
  4. 4. Point of Sales• Point of Sales– システム、アプリを売った時点が最高品質– ウォーターフォールモデルで主に発生– それ以降は品質が低下し続ける– それ以降は品質が低下し続ける• 品質低下を防ぐために保守対応、障害対応が待っている• 瑕疵担保期間が過ぎると品質低下を許容したまま使い続けるケースがありすぎて…– 古来からのSI手法• 良くないことはわかりつつも現実問題、Point of Salesにならざるを得ないケースがほとんど
  5. 5. Point of Use• Point of Sales– 現在が常に最高品質– アジャイル開発モデル– ツールなどを駆使して可能な限り自動化することが常識な世界常識な世界• テスト、ビルド、デプロイ、CIなど。人間による試験以外は自動化– Webサービス運用で適用されること• システムを育てていくという観点• システムを他社に売るわけではないので可能だったり• 現実問題、SIerに適用するのはなかなかハードルが高い– 永和システムマネジメントはSierながら実践
  6. 6. CIをやる意味• 効率的な開発プロセスを学ぶ– 手元の環境だけではなく、共通の環境(サーバ)場でテスト、ビルド– レポートが可視化される– レポートが可視化される– なにかあったら(デグレードなど)すぐ分かる• 品質向上の意識が高まる– 否応なしにグラフ化される– 結果を青くしたい欲求
  7. 7. Jenkinsとは• 最も人気のあるCI(継続的インテグレーション)ツール• 豊富なプラグイン• 開発者は日本人• 開発者は日本人• Java製
  8. 8. Jenkinsでやるべきこと• 必須– ユニットテスト• やれたらやりたい– 糞コードチェック– 糞コードチェック• PMD, CheckStyle, CPD– カバレッジ• やってもやんなくてもいい– メール通知、Growl通知
  9. 9. Javaプロジェクトをビルド• 省略– そこいらに情報があるので調べてくれ。腐るほどある。
  10. 10. PMDとかCheckStyleは面倒なんでやってません。ガチで作るときはちゃんとルールの定義からやりましょう。
  11. 11. PHPプロジェクトをビルド• PHPもJava並にビルド環境が揃ってる• しかも情報がそれなりに豊富– Javaには及ばないが• PMD、CPDなども実用レベルなのでPHPと• PMD、CPDなども実用レベルなのでPHPとJenkinsはかなり相性がいいのではないか
  12. 12. PHPMD• PHP版PMD– バグがありそうなところやコード的におかしい部分をソースレベルで指摘してくれる。• 黄色– 弱い警告。結構出る。– 弱い警告。結構出る。– 全部直すのはけっこうきつい。– 個人的には目をつぶる• 赤– 強い警告。あまり出ない。– これは直すべき。
  13. 13. インストール$> sudo pear install phpunit/phpcpd$> sudo pear install phpunit/phpcpd
  14. 14. PHPCPD• コード重複をチェックする– 例えば同じようなif文が連発する、など• 閾値で調整できる• 普通に書いていればまず出ない• 普通に書いていればまず出ない
  15. 15. インストール$> sudo pear install phpmd/PHP_PMD$> sudo pear install phpmd/PHP_PMD
  16. 16. PHPUnit• ご存知ユニットテストフレームワーク– 他のFWでもいけるかもしれないが、PHPUnitが一番無難で楽
  17. 17. インストール$> sudo pear install phpunit/PHPUnit$> sudo pear install phpunit/PHPUnit
  18. 18. Phing• PHP版Ant– Antと使い方もほとんど同じ• Phing+build.xmlでビルド• サンプル• サンプル– https://gist.github.com/1589175
  19. 19. Jenkinsでビルドするには• レポートファイルが必要• build.xmlを使うと以下のファイルが生成される(名前は独自に変更可能)– pmd.xml– pmd.xml– cpd.xml– phpunit.xml• これらをJenkinsに食わせる– [ジョブ]->[設定]でレポートファイルを指定する
  20. 20. Rubyプロジェクトをビルド• 情報がほとんどない• 実戦投入するのはきついかも– 特にRails• 今のところRspec/TestUnitで自動テストするこ• 今のところRspec/TestUnitで自動テストすることしかできていない– 知らないだけの可能性あり• JUnit形式でレポート吐ければ終わり
  21. 21. RubyプロジェクトをJenkisビルド• 用意するもの– ci-reporter• gem install ci-reporter– Rakefile– Rakefile• Jenkinsから呼び出す• テスト– RSpec– Test::Unitでもいける
  22. 22. Rakefileでビルド・Rakefilerequire rspec/core/rake_taskrequire ci/reporter/rake/rspecRSpec::Core::RakeTask.new(:spec => ["ci:setup:rspec"]) do |t|t.pattern = **/*_spec.rbt.pattern = **/*_spec.rbend
  23. 23. JavaScriptプロジェクトをビルド• 情報はほとんどない• しかも何パターンかある– JsUnit、mocha、QUnit etc.• しかし、結局はテストしてJUnit形式のxml吐か• しかし、結局はテストしてJUnit形式のxml吐かせることさえできればいいことに気づいたらあっさりできた• まさかJSの自動テスト、ビルドにJavaとPerlが必要とは。
  24. 24. JavaScriptでJenkinsビルドする手順• 用意するもの– node.js– QUnit• https://github.com/jquery/qunit• https://github.com/jquery/qunit– QUnit-TAP• npm install qunit-tap– TAP::Harness::JUnit• install TAP::Harness::Junit
  25. 25. コマンドで実行prove --ext=test.js --exec=node -l test --harnessprove --ext=test.js --exec=node -l test --harnessTAP::Harness::JUnit
  26. 26. Antで実行ant runant run
  27. 27. Antで実行ant runant run
  28. 28. Antスクリプト• https://gist.github.com/1609681
  29. 29. まとめ• アジャイル開発では必須のプロセス「CI」– 特にJenkinsは注目を集めている• 自動化を追求– テストの自動化は当たり前のように行われている– テストの自動化は当たり前のように行われている• テスト自動化を自動化– 手動でテスト実行せず、CIサーバにまかせる– 実行、レポートも自動• 品質強化、維持しよう

×