Submit Search
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
•
11 likes
•
2,225 views
龍一 田中
Follow
JenkinsでJava/PHP/Ruby/JavaScriptプロジェクトをビルド。Javaは省略してます。
Read less
Read more
1 of 37
Download now
Downloaded 18 times
More Related Content
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
1.
Jenkinsで Java/PHP/Ruby/JavaScript をビルドするをビルドする Web技術勉強会 2012/01/14 Ryuichi TANAKA(@mapserver2007)
2.
CI(継続的インテグレーション) • 品質を継続的に確保するための手法 • XP(エクストリームプログラミング)の一つ •
ビルド、テスト、インスペクションを継続的に自 動的に実施動的に実施 • CIをサポートする言語、ツールが増えつつあ る
3.
Point of SalesとPoint
of Use http://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
20.
Jenkinsでビルドするには • レポートファイルが必要 • build.xmlを使うと以下のファイルが生成され る(名前は独自に変更可能) –
pmd.xml– pmd.xml – cpd.xml – phpunit.xml • これらをJenkinsに食わせる – [ジョブ]->[設定]でレポートファイルを指定する
24.
Rubyプロジェクトをビルド • 情報がほとんどない • 実戦投入するのはきついかも –
特にRails • 今のところRspec/TestUnitで自動テストするこ• 今のところRspec/TestUnitで自動テストするこ としかできていない – 知らないだけの可能性あり • JUnit形式でレポート吐ければ終わり
25.
RubyプロジェクトをJenkisビルド • 用意するもの – ci-reporter •
gem install ci-reporter – Rakefile– Rakefile • Jenkinsから呼び出す • テスト – RSpec – Test::Unitでもいける
26.
Rakefileでビルド ・Rakefile require 'rspec/core/rake_task' require 'ci/reporter/rake/rspec' RSpec::Core::RakeTask.new(:spec
=> ["ci:setup:rspec"]) do |t| t.pattern = '**/*_spec.rb't.pattern = '**/*_spec.rb' end
29.
JavaScriptプロジェクトをビルド • 情報はほとんどない • しかも何パターンかある –
JsUnit、mocha、QUnit etc. • しかし、結局はテストしてJUnit形式のxml吐か• しかし、結局はテストしてJUnit形式のxml吐か せることさえできればいいことに気づいたら あっさりできた • まさかJSの自動テスト、ビルドにJavaとPerlが 必要とは。
30.
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
31.
コマンドで実行 prove --ext=test.js --exec=node
-l test --harnessprove --ext=test.js --exec=node -l test --harness TAP::Harness::JUnit
32.
Antで実行 ant runant run
33.
Antで実行 ant runant run
34.
Antスクリプト • https://gist.github.com/1609681
37.
まとめ • アジャイル開発では必須のプロセス「CI」 – 特にJenkinsは注目を集めている •
自動化を追求 – テストの自動化は当たり前のように行われている– テストの自動化は当たり前のように行われている • テスト自動化を自動化 – 手動でテスト実行せず、CIサーバにまかせる – 実行、レポートも自動 • 品質強化、維持しよう
Download