Jenkinsstudy#4kokawa

14,026 views
14,463 views

Published on

第4回Jenkins勉強会
http://kokucheese.com/event/index/16114/

で発表した資料です。

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,026
On SlideShare
0
From Embeds
0
Number of Embeds
8,447
Actions
Shares
0
Downloads
0
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

Jenkinsstudy#4kokawa

  1. 1. 「Jenkins+α」で開発環境が みるみる良くなる ~VisualC++編~ 粉川 貴至 @Kokawa_Takashi
  2. 2. 自己紹介• @Kokawa_Takashi
  3. 3. CIしてますか? • 継続的インテグレーション – Continuous Integration(統合、統一) – 常に動く(ビルドが通る)状態を作る • アジャイル開発ツール三種の神器 – 「SCM、BTS、CI」 • 変更に強い、健全な環境を維持
  4. 4. Jenkinsさん • CI(継続的インテグレーション)ツール • 作業を自動化・共有するための枠組み • 優秀なWebインターフェース • 導入が簡単! • 多くのプラグイン拡張!
  5. 5. 何と言っても・・・
  6. 6. コマンドライン、バッチ、シェルスクリプト、が動かせる!1500行のビルドバッチ・・・。 そのまま動く!
  7. 7. Visual C++編 • Jenkinsと他のツールの組み合わせ方を紹介 – 組み合わせて使ってなんぼ • 具体的な説明のために環境を特定しました – 他の環境にも適用できます – というか他の環境でも使えるものが多いです – 考え方が同じでやり方だけ違う説明を省略
  8. 8. Jenkinsの起動
  9. 9. Jenkinsの起動実行中のジョブ ジョブ一覧 実行ボタン 実行結果 青:成功、赤:失敗
  10. 10. プラグインの管理 – Jenkinsの管理画面から見れます – 更新の確認も!
  11. 11. Jenkins+α • +自動ビルド • +自動テスト • +UIの自動テスト • +静的解析、メトリクス分析 • +ドキュメント • +コラボレーションツール
  12. 12. +自動ビルド
  13. 13. 必須!
  14. 14. 自動ビルド VisualStudio• MSBuild か devenv• MSBuild Plugin (オススメ!)https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin• MSBuildは.NET Frameworkに入っています – VisualStudioのインストール不要 – コンパイラは必要なのでWindowsSDK等で対応する より素直にVisualStudio入れた方が楽でした・・・。 – C:¥WINDOWS¥Microsoft.NET¥Framework¥v○¥MSBuild.exe
  15. 15. 自動ビルド• バージョン管理システムとの連動 – Subversionとの連動は post-commit hook か、ポーリング リポジトリ コミット トリガー 作業環境 ビルド
  16. 16. 自動ビルド+警告検知• Warnings Pluginhttps://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin• チームの現状に合わせて設定 – ベストは警告レベル4で検出0! – まずは「新規」検知から潰す
  17. 17. +自動テスト
  18. 18. C++のユニットテストツール • CppUnit, CppTest – 比較的歴史が長い、最近の更新頻度は低い – 既にテストコードがあれば○ • GoogleTest – 充実したテスト機能 • Assert+Expext,ParameterizedTest,DeathTest • MSTest VisualStudio – VS2008からProfessional Edition以上で利用可 • 元はTeam Foundation Serverで使えた機能 • データドリブンテスト(csv、XML)が良い感じ!
  19. 19. 自動テスト • テスト結果をxmlで出力 – Jenkinsが読み込んでグラフ化してくれる – 標準対応はJUnit形式(googletest) • その他のテストツールは – CppUnit, CppTest, MSTest… https://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin
  20. 20. +UIの自動テスト
  21. 21. UIの自動テスト • 起動→終了だけでも効果あり! • Jenkinsのスレイブをテスト専用環境 に入れてクリーンな環境で実行 – 利用者と同じ環境設定 – リソース忘れ等の確認
  22. 22. UIの自動テスト • UI操作自動化ツールをコマンドラインから実行 • AutoIt – http://www.autoitscript.com/site/autoit/ – Windows専用、ネイティブAPIを直接呼ぶ • Sikuli – http://sikuli.org/ – スクリーンショットベースのスクリプト – Windows, Mac OS X, Linux
  23. 23. +静的解析&メトリクス分析
  24. 24. 静的解析• Cppcheck Pluginhttps://wiki.jenkins-ci.org/display/JENKINS/Cppcheck+Plugin
  25. 25. 実装漏れ(ToDo)検知 • Task Scanner Plugin https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin • ToDo、Note…
  26. 26. コーディングルールチェック • cpplint • http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py • Violations Pluginで対応 https://wiki.jenkins-ci.org/display/JENKINS/Violations
  27. 27. メトリクス分析 コード行数や、コメント率、複雑度等を分析 •推移や他のプロジェクトと比較して健全度を測る
  28. 28. メトリクス分析 • CCCC(C and C++ Code Counter) https://wiki.jenkins-ci.org/display/JENKINS/CCCC+Plugin モジュール数 コード行数 複雑度 コメント行数
  29. 29. メトリクス分析 • Sonar (C, C#) https://wiki.jenkins-ci.org/display/JENKINS/Sonar+plugin • Java向けツール • C,C#はプラグイン対応 • C++はもう一息・・・。
  30. 30. Sonar
  31. 31. +ドキュメント
  32. 32. ドキュメント • Doxygenドキュメント生成 – コマンドラインから実行して生成 • Doxygenの設定+Warningsプラグイン – コメントの無いメソッドを検出できる
  33. 33. +コラボレーションツール
  34. 34. BTSとの連動 • Redmine,Tracとの連動 • Jenkinsからチケット発行 • コミット→条件判定(Python)→チケット発行 • コードレビュー Python Plugin https://wiki.jenkins-ci.org/display/JENKINS/Python+Plugin ビルド方法にPythonスクリプトを追加 WebAPIへのアクセス
  35. 35. コラボレーションツール • メール通知(標準機能) • Twitter、Jabber、IRC連動 • チームメンバーと親和性の高い仕組みを入れ るのが○
  36. 36. とりあえず触ったものを片っ端から紹介してみま した
  37. 37. どや
  38. 38. こんな全部乗せの巨大なシステムを見せられても引きます引いた人、居るでしょ?
  39. 39. もともと開発環境系のツールに詳しかった訳で はないですプラグイン一覧を眺めて統合すると便利そうな ものを試す効果が出そうなものを本番環境へ導入
  40. 40. Jenkins(Hudson)さんとぼくの歴史(上) • 2008冬:存在を知る、(Trac、GoogleTestと戯れる) • 2009.5:チームに自動ビルド導入 • 設定ミスでのメール通知誤爆事件 • 2009.6:成果物のパッケージ化、デプロイ自動化 • 2009.8:静的解析にかけてみる→(放置ぎみ) • 2009.10:UIの自動テストを導入(AutoIt) • インストーラーの自動実行、サンプルの起動終了 • 2009.11:(Redmineと戯れる) • 2009.12:ドキュメントの自動生成 • 2009.12:チーム外への波及
  41. 41. Jenkinsさんとぼくの歴史(下) • 2010.2:メトリクス分析について真面目に考えだす(Sonar) • 2010.3:チケット管理との連携を考える • 2010.8:ツールのデータ互換性テスト導入(MSTest) • 2011.4:コミット→自動レビューチケット発行 • 2011.8:静的解析(Coverity)とJenkinsとRedmineの連動 • 2011.9:コメントの無いドキュメントのチェック
  42. 42. あまり活用できていないものもあります。ユニットテストとか、タスク対応とか、メトリクス分析とか、静的解析もチケットと連動するまではいまいち・・・。
  43. 43. • 試して使う人の反応が良いものを残す• 工夫で使い勝手があがるものはがんばる – ジョブの設定 – プラグイン作成
  44. 44. まずは自動ビルドから
  45. 45. 次に効果の高そうなところから
  46. 46. 関係者と価値観を共有しながら
  47. 47. 継続して
  48. 48. カイゼンしていきましょう!
  49. 49. ありがとうございました!

×