Upload
hiroshi-maekawa
View
2.245
Download
1
Embed Size (px)
DESCRIPTION
第6回大阪Jenkins勉強会での発表資料です。
Citation preview
お前だれよ?
•Posauneです。
•@Posauneです。
•前川です。
2013/11/19(火) 第6回大阪Jenkins勉強会
1
何してんの?
•プログラマです。
•興味ある分野•C#、F#、Poweshell,関数型言語軍、Ruby/Python•データサイエンス(R・統計)•UX、Lean、Agile•テスト・品質保証•自動化効率化
<-節操ない系
2013/11/19(火) 第6回大阪Jenkins勉強会
2
...何してんの?
•京都アジャイル勉強会
•統計学勉強会@devLove関西
•Visual Studio勉強会
•TABOK勉強会 ー> 検証コレクション
•これでもだいぶ減ってる
2013/11/19(火) 第6回大阪Jenkins勉強会
3
あ、そうそう
•Microsoft MVP for VisualStudio ALM を受賞しました
2013/11/19(火) 第6回大阪Jenkins勉強会
4
というわけで…
•Visual Studio + Test Management + TFS 、すごいです。
•1プラットフォームで要求管理から設計、コーディング、テストと一気通貫できる環境は早々無いです。
•TFS User Groupもよろしく!•多分イベントやるよ
2013/11/19(火) 第6回大阪Jenkins勉強会
5
さて、Jenkinsの話をします
窓辺に立つJenkins@Posaune
話す内容
•WindowsでJenkinsを使う時に、「僕が」考えていること
•実際に使っているものも、これから使えそうだと思っているものも紹介します。
2013/11/19(火) 第6回大阪Jenkins勉強会
8
前提条件
•Windowsの「デスクトップアプリ」を主なターゲットにしています
•開発・ビルド環境ともにWindowsを想定
•開発言語は.NET系を一応前提
2013/11/19(火) 第6回大阪Jenkins勉強会
9
① Jenkins 窓辺に立つ
•普通にインストールすればOK
•Chocolatey使ってもいいかもね
•基本は勝手にサービス登録してくれるけど、コマンド叩く手法も覚えておいたほうがいい
2013/11/19(火) 第6回大阪Jenkins勉強会
10
そうそう、Chocolatey
•Windows版apt-get
•Nugetの仕組みを使ってアプリのインストールを行っている
•割りと落ちてるパッケージが多かったりするけど、注目しとくべき
2013/11/19(火) 第6回大阪Jenkins勉強会
12
② Jenkins 窓を磨く
•ビルドはMS BuildでOK
•プラグインもあるよ
•導入の障壁は超低い。楽ちん。
2013/11/19(火) 第6回大阪Jenkins勉強会
13
③ Jenkins 窓を検査する
•ビルドだけやるのは勿体無い。テストしようテスト。
•各種プラグインあります。•MSTest / VSTest•NUnit•Gallio
2013/11/19(火) 第6回大阪Jenkins勉強会
14
Gallio
•マルチなテスト環境を統合するテストランナー
•MSTest、NUnitほか、xUnit.net、MbUnitなんでもござれ
•コードカバレッジ取得までセットになってる何気にすごい子
2013/11/19(火) 第6回大阪Jenkins勉強会
15
④ Jenkins 窓の埃を気にする
•コードカバレッジ取りましょう!•有償:NCover
• Jenkinsプラグインあり
•無償:OpenCover• Jenkinsプラグインなし
2013/11/19(火) 第6回大阪Jenkins勉強会
16
⑤ Jenkins 窓にコードを書き始める
•OpenCoverはじめ、対応できないツールは結構ある
•バッチ実行プラグインは標準でついてくる、んだけど・・・•テストの追加に追従させたい•OpenCoverの結果を加工して表示したい•バージョン番号はビルド番号を自動で…
2013/11/19(火) 第6回大阪Jenkins勉強会
17
「そんなShellで大丈夫か?」「一番いいのを頼む。」
PowerShellプラグイン
•Powershellでかけます。
•それだけです。それだけだけど、超便利です。
•ちなみにSetExecutionPolicyの変更は事前に必要です。•解決策あるのでプルリクしてみようかな…
2013/11/19(火) 第6回大阪Jenkins勉強会
19
⑥ Jenkins 窓をもっと検査する
•静的解析ツールも何気に充実しています•FxCop(コーディング規約)•CCM(サイクロマチック複雑度)•Violation(警告数)•Visual Studio Code Metrics(各種コードメトリクス)
2013/11/19(火) 第6回大阪Jenkins勉強会
20
とはいえ
•Jenkinsだと設定が割と大変•そもそも対応してないからPowershell叩くパターンも結構ある
•各種メトリックスが好き勝手に結果を表示するのでカオス
2013/11/19(火) 第6回大阪Jenkins勉強会
21
あー、どこかに.NETに対応したフリー(できればOSS)のJenkinsとも連携できる静的解析ツールはないかなー・・・
⑦ Jenkins 人を雇う
•静的解析はそれ専門のツール、SonarQubeにお任せしましょう•マルチ言語対応。JavaがベースだけどC#プラグインも豊富•Jenkinsから解析をキック可能•テストカバレッジを蓄積(単体テストの代替可)•サイクロマチック複雑度•FxCop / StyleCop / Gandarme の結果を統合•なにより、見やすい
2013/11/19(火) 第6回大阪Jenkins勉強会
23
詳しくはBlogで!
•http://posaune.hatenablog.com/entry/2013/12/04/083834
•http://posaune.hatenablog.com/entry/2013/12/04/083834
2013/11/19(火) 第6回大阪Jenkins勉強会
24
まとめ
•Window上でもJenkinsは色々できる•自動ビルド•自動テスト•静的解析・カバレッジ取得
•JenkinsをWindows開発に活かしてプロジェクトを元気にしましょう!•もちろんVS TFSも検討してね!
2013/11/19(火) 第6回大阪Jenkins勉強会
25
で、終わると思った??
デプロイメントパイプラインとはなんだったのか
2013/11/19(火) 第6回大阪Jenkins勉強会
27
デプロイメントパイプラインとはなんだったのか
2013/11/19(火) 第6回大阪Jenkins勉強会
28
⑦ Jenkins 窓を検収する
•Windowsで受け入れテスト ー> Exeを叩いて実行
•Friendly or White の二択•Friendly: 超強力、ただしまだ情報少な目•White: UI Automationラッパーなのでできないこともある。情報は多い。
•どうせならSpecFlow使ってみる?
2013/11/19(火) 第6回大阪Jenkins勉強会
29
White + SpecFlowの例
2013/11/19(火) 第6回大阪Jenkins勉強会
30
よし!Jenkinsでテストだ!
2013/11/19(火) 第6回大阪Jenkins勉強会
31
_人人人人人人_> 突然の死 < ̄Y^Y^Y^Y^Y ̄
UIテストの罠
•Jenkinsをサービス起動しているとUIテストで失敗する
•“java -jar Jenkins.war“で起動するとOK•Windowsのユーザー空間を使いはじめるとこっちじゃないと辛くなる
2013/11/19(火) 第6回大阪Jenkins勉強会
34
⑧ Jenkins 窓を飛び移る
•Windows アプリケーションにとってのデプロイ = インストール
•よし!インストールだ!•試しに自分のマシンでやってみるか・・・
2013/11/19(火) 第6回大阪Jenkins勉強会
35
_人人人人人人_> 突然のUAC < ̄Y^Y^Y^Y^Y ̄
UACを超えられるか?
•超泥臭くやるなら…•リモートデスクトップでつないで•画像認識自動化ツールSikuliで操作
•外部操作にこだわらないなら・・•タスクスケジューラに登録して実行•登録したのを外から叩くてはある
2013/11/19(火) 第6回大阪Jenkins勉強会
37
あー、どこかに追加ライブラリなしでUACを回避してリモート経由で実行できるSSH on Unixみたいなツールはないかなー・・・
PsExec from PsTools
•リモートPC上で任意のスクリプトを動かすためのライブラリ
•デフォルトではUACを止める。
•…が、いくつかレジストリを操作することで…
2013/11/19(火) 第6回大阪Jenkins勉強会
39
Demo:PsExec
2013/11/19(火) 第6回大阪Jenkins勉強会
40
Demo:合鍵を手に入れたJenkins
2013/11/19(火) 第6回大阪Jenkins勉強会
41
詳しくはBlogで!
•http://posaune.hatenablog.com/entry/2014/02/25/002408
2013/11/19(火) 第6回大阪Jenkins勉強会
42
デプロイメントパイプライン(案)
- White + SpecFlow- Jenkinsは java -jar 起動
- PsExec
PsExecで送り込んで実行しちゃえ
2013/11/19(火) 第6回大阪Jenkins勉強会
43
⑩ Jenkinsがいっぱい
•依存ライブラリは別の執事がビルドしている
•他所の執事の特定バージョンのビルドを使いたい•よーし、dllをリポジトリに追加だ!•git add “hogehoge.dll”
2013/11/19(火) 第6回大阪Jenkins勉強会
44
_人人人人人人人人人人人人人_> git add “hogehoge.dll" < ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
2013/11/19(火) 第6回大阪Jenkins勉強会
45
リポジトリにバイナリを入れるな!!
•「あー、dllのバージョン上げ忘れちゃった(・ω <)」
•「DllNotFoundExceptionってなんですかー?全部ファイルは揃ってるんですけど…」
•「subversionのチェックアウトで一日終わってしまったorz」
2013/11/19(火) 第6回大阪Jenkins勉強会
46
ここにNuget Serverを建てよう
•dllコミットが許されるのはVS2008までだよねー
•2010で、nuget使えます•設定XMLだけで自動でライブラリダウンロード•依存ライブラリも自動で取ってくる•厳密にバージョン指定可能•ローカルにNugetサーバも建てられる
2013/11/19(火) 第6回大阪Jenkins勉強会
47
デプロイメントパイプライン(案)
2013/11/19(火) 第6回大阪Jenkins勉強会
48
喋ってないこと
•ソースコード管理•Gitがいいなぁ。
•インストーラ作成•今どきWixですよね。
2013/11/19(火) 第6回大阪Jenkins勉強会
49
まとめ(ない)
•Windowsでのデプロイメントパイプライン道は険しい
•ゴールをはっきり持たないと、心が折れる•どこまでやるかも含めて、ゴール設定必要
•手札を揃えておけば、まぁ何とかなる
2013/11/19(火) 第6回大阪Jenkins勉強会
50
お手本
2013/11/19(火) 第6回大阪Jenkins勉強会
51
みんなも手札を揃えよう!!