Your SlideShare is downloading. ×
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

3,992
views

Published on

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

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


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

No Downloads
Views
Total Views
3,992
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
17
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×