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