窓辺に立つ執事

52
お前だれよ? Posauneです。 @Posauneです。 前川です。 2013/11/19(火) 第6回大阪Jenkins勉強会 1

Upload: hiroshi-maekawa

Post on 28-May-2015

2.245 views

Category:

Engineering


1 download

DESCRIPTION

第6回大阪Jenkins勉強会での発表資料です。

TRANSCRIPT

Page 1: 窓辺に立つ執事

お前だれよ?

•Posauneです。

•@Posauneです。

•前川です。

2013/11/19(火) 第6回大阪Jenkins勉強会

1

Page 2: 窓辺に立つ執事

何してんの?

•プログラマです。

•興味ある分野•C#、F#、Poweshell,関数型言語軍、Ruby/Python•データサイエンス(R・統計)•UX、Lean、Agile•テスト・品質保証•自動化効率化

<-節操ない系

2013/11/19(火) 第6回大阪Jenkins勉強会

2

Page 3: 窓辺に立つ執事

...何してんの?

•京都アジャイル勉強会

•統計学勉強会@devLove関西

•Visual Studio勉強会

•TABOK勉強会 ー> 検証コレクション

•これでもだいぶ減ってる

2013/11/19(火) 第6回大阪Jenkins勉強会

3

Page 4: 窓辺に立つ執事

あ、そうそう

•Microsoft MVP for VisualStudio ALM を受賞しました

2013/11/19(火) 第6回大阪Jenkins勉強会

4

Page 5: 窓辺に立つ執事

というわけで…

•Visual Studio + Test Management + TFS 、すごいです。

•1プラットフォームで要求管理から設計、コーディング、テストと一気通貫できる環境は早々無いです。

•TFS User Groupもよろしく!•多分イベントやるよ

2013/11/19(火) 第6回大阪Jenkins勉強会

5

Page 6: 窓辺に立つ執事

さて、Jenkinsの話をします

Page 7: 窓辺に立つ執事

窓辺に立つJenkins@Posaune

Page 8: 窓辺に立つ執事

話す内容

•WindowsでJenkinsを使う時に、「僕が」考えていること

•実際に使っているものも、これから使えそうだと思っているものも紹介します。

2013/11/19(火) 第6回大阪Jenkins勉強会

8

Page 9: 窓辺に立つ執事

前提条件

•Windowsの「デスクトップアプリ」を主なターゲットにしています

•開発・ビルド環境ともにWindowsを想定

•開発言語は.NET系を一応前提

2013/11/19(火) 第6回大阪Jenkins勉強会

9

Page 10: 窓辺に立つ執事

① Jenkins 窓辺に立つ

•普通にインストールすればOK

•Chocolatey使ってもいいかもね

•基本は勝手にサービス登録してくれるけど、コマンド叩く手法も覚えておいたほうがいい

2013/11/19(火) 第6回大阪Jenkins勉強会

10

Page 11: 窓辺に立つ執事
Page 12: 窓辺に立つ執事

そうそう、Chocolatey

•Windows版apt-get

•Nugetの仕組みを使ってアプリのインストールを行っている

•割りと落ちてるパッケージが多かったりするけど、注目しとくべき

2013/11/19(火) 第6回大阪Jenkins勉強会

12

Page 13: 窓辺に立つ執事

② Jenkins 窓を磨く

•ビルドはMS BuildでOK

•プラグインもあるよ

•導入の障壁は超低い。楽ちん。

2013/11/19(火) 第6回大阪Jenkins勉強会

13

Page 14: 窓辺に立つ執事

③ Jenkins 窓を検査する

•ビルドだけやるのは勿体無い。テストしようテスト。

•各種プラグインあります。•MSTest / VSTest•NUnit•Gallio

2013/11/19(火) 第6回大阪Jenkins勉強会

14

Page 15: 窓辺に立つ執事

Gallio

•マルチなテスト環境を統合するテストランナー

•MSTest、NUnitほか、xUnit.net、MbUnitなんでもござれ

•コードカバレッジ取得までセットになってる何気にすごい子

2013/11/19(火) 第6回大阪Jenkins勉強会

15

Page 16: 窓辺に立つ執事

④ Jenkins 窓の埃を気にする

•コードカバレッジ取りましょう!•有償:NCover

• Jenkinsプラグインあり

•無償:OpenCover• Jenkinsプラグインなし

2013/11/19(火) 第6回大阪Jenkins勉強会

16

Page 17: 窓辺に立つ執事

⑤ Jenkins 窓にコードを書き始める

•OpenCoverはじめ、対応できないツールは結構ある

•バッチ実行プラグインは標準でついてくる、んだけど・・・•テストの追加に追従させたい•OpenCoverの結果を加工して表示したい•バージョン番号はビルド番号を自動で…

2013/11/19(火) 第6回大阪Jenkins勉強会

17

Page 18: 窓辺に立つ執事

「そんなShellで大丈夫か?」「一番いいのを頼む。」

Page 19: 窓辺に立つ執事

PowerShellプラグイン

•Powershellでかけます。

•それだけです。それだけだけど、超便利です。

•ちなみにSetExecutionPolicyの変更は事前に必要です。•解決策あるのでプルリクしてみようかな…

2013/11/19(火) 第6回大阪Jenkins勉強会

19

Page 20: 窓辺に立つ執事

⑥ Jenkins 窓をもっと検査する

•静的解析ツールも何気に充実しています•FxCop(コーディング規約)•CCM(サイクロマチック複雑度)•Violation(警告数)•Visual Studio Code Metrics(各種コードメトリクス)

2013/11/19(火) 第6回大阪Jenkins勉強会

20

Page 21: 窓辺に立つ執事

とはいえ

•Jenkinsだと設定が割と大変•そもそも対応してないからPowershell叩くパターンも結構ある

•各種メトリックスが好き勝手に結果を表示するのでカオス

2013/11/19(火) 第6回大阪Jenkins勉強会

21

Page 22: 窓辺に立つ執事

あー、どこかに.NETに対応したフリー(できればOSS)のJenkinsとも連携できる静的解析ツールはないかなー・・・

Page 23: 窓辺に立つ執事

⑦ Jenkins 人を雇う

•静的解析はそれ専門のツール、SonarQubeにお任せしましょう•マルチ言語対応。JavaがベースだけどC#プラグインも豊富•Jenkinsから解析をキック可能•テストカバレッジを蓄積(単体テストの代替可)•サイクロマチック複雑度•FxCop / StyleCop / Gandarme の結果を統合•なにより、見やすい

2013/11/19(火) 第6回大阪Jenkins勉強会

23

Page 24: 窓辺に立つ執事

詳しくは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

Page 25: 窓辺に立つ執事

まとめ

•Window上でもJenkinsは色々できる•自動ビルド•自動テスト•静的解析・カバレッジ取得

•JenkinsをWindows開発に活かしてプロジェクトを元気にしましょう!•もちろんVS TFSも検討してね!

2013/11/19(火) 第6回大阪Jenkins勉強会

25

Page 26: 窓辺に立つ執事

で、終わると思った??

Page 27: 窓辺に立つ執事

デプロイメントパイプラインとはなんだったのか

2013/11/19(火) 第6回大阪Jenkins勉強会

27

Page 28: 窓辺に立つ執事

デプロイメントパイプラインとはなんだったのか

2013/11/19(火) 第6回大阪Jenkins勉強会

28

Page 29: 窓辺に立つ執事

⑦ Jenkins 窓を検収する

•Windowsで受け入れテスト ー> Exeを叩いて実行

•Friendly or White の二択•Friendly: 超強力、ただしまだ情報少な目•White: UI Automationラッパーなのでできないこともある。情報は多い。

•どうせならSpecFlow使ってみる?

2013/11/19(火) 第6回大阪Jenkins勉強会

29

Page 30: 窓辺に立つ執事

White + SpecFlowの例

2013/11/19(火) 第6回大阪Jenkins勉強会

30

Page 31: 窓辺に立つ執事

よし!Jenkinsでテストだ!

2013/11/19(火) 第6回大阪Jenkins勉強会

31

Page 32: 窓辺に立つ執事
Page 33: 窓辺に立つ執事

_人人人人人人_> 突然の死 < ̄Y^Y^Y^Y^Y ̄

Page 34: 窓辺に立つ執事

UIテストの罠

•Jenkinsをサービス起動しているとUIテストで失敗する

•“java -jar Jenkins.war“で起動するとOK•Windowsのユーザー空間を使いはじめるとこっちじゃないと辛くなる

2013/11/19(火) 第6回大阪Jenkins勉強会

34

Page 35: 窓辺に立つ執事

⑧ Jenkins 窓を飛び移る

•Windows アプリケーションにとってのデプロイ = インストール

•よし!インストールだ!•試しに自分のマシンでやってみるか・・・

2013/11/19(火) 第6回大阪Jenkins勉強会

35

Page 36: 窓辺に立つ執事

_人人人人人人_> 突然のUAC < ̄Y^Y^Y^Y^Y ̄

Page 37: 窓辺に立つ執事

UACを超えられるか?

•超泥臭くやるなら…•リモートデスクトップでつないで•画像認識自動化ツールSikuliで操作

•外部操作にこだわらないなら・・•タスクスケジューラに登録して実行•登録したのを外から叩くてはある

2013/11/19(火) 第6回大阪Jenkins勉強会

37

Page 38: 窓辺に立つ執事

あー、どこかに追加ライブラリなしでUACを回避してリモート経由で実行できるSSH on Unixみたいなツールはないかなー・・・

Page 39: 窓辺に立つ執事

PsExec from PsTools

•リモートPC上で任意のスクリプトを動かすためのライブラリ

•デフォルトではUACを止める。

•…が、いくつかレジストリを操作することで…

2013/11/19(火) 第6回大阪Jenkins勉強会

39

Page 40: 窓辺に立つ執事

Demo:PsExec

2013/11/19(火) 第6回大阪Jenkins勉強会

40

Page 41: 窓辺に立つ執事

Demo:合鍵を手に入れたJenkins

2013/11/19(火) 第6回大阪Jenkins勉強会

41

Page 42: 窓辺に立つ執事

詳しくはBlogで!

•http://posaune.hatenablog.com/entry/2014/02/25/002408

2013/11/19(火) 第6回大阪Jenkins勉強会

42

Page 43: 窓辺に立つ執事

デプロイメントパイプライン(案)

- White + SpecFlow- Jenkinsは java -jar 起動

- PsExec

PsExecで送り込んで実行しちゃえ

2013/11/19(火) 第6回大阪Jenkins勉強会

43

Page 44: 窓辺に立つ執事

⑩ Jenkinsがいっぱい

•依存ライブラリは別の執事がビルドしている

•他所の執事の特定バージョンのビルドを使いたい•よーし、dllをリポジトリに追加だ!•git add “hogehoge.dll”

2013/11/19(火) 第6回大阪Jenkins勉強会

44

Page 45: 窓辺に立つ執事

_人人人人人人人人人人人人人_> git add “hogehoge.dll" < ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

2013/11/19(火) 第6回大阪Jenkins勉強会

45

Page 46: 窓辺に立つ執事

リポジトリにバイナリを入れるな!!

•「あー、dllのバージョン上げ忘れちゃった(・ω <)」

•「DllNotFoundExceptionってなんですかー?全部ファイルは揃ってるんですけど…」

•「subversionのチェックアウトで一日終わってしまったorz」

2013/11/19(火) 第6回大阪Jenkins勉強会

46

Page 47: 窓辺に立つ執事

ここにNuget Serverを建てよう

•dllコミットが許されるのはVS2008までだよねー

•2010で、nuget使えます•設定XMLだけで自動でライブラリダウンロード•依存ライブラリも自動で取ってくる•厳密にバージョン指定可能•ローカルにNugetサーバも建てられる

2013/11/19(火) 第6回大阪Jenkins勉強会

47

Page 48: 窓辺に立つ執事

デプロイメントパイプライン(案)

2013/11/19(火) 第6回大阪Jenkins勉強会

48

Page 49: 窓辺に立つ執事

喋ってないこと

•ソースコード管理•Gitがいいなぁ。

•インストーラ作成•今どきWixですよね。

2013/11/19(火) 第6回大阪Jenkins勉強会

49

Page 50: 窓辺に立つ執事

まとめ(ない)

•Windowsでのデプロイメントパイプライン道は険しい

•ゴールをはっきり持たないと、心が折れる•どこまでやるかも含めて、ゴール設定必要

•手札を揃えておけば、まぁ何とかなる

2013/11/19(火) 第6回大阪Jenkins勉強会

50

Page 51: 窓辺に立つ執事

お手本

2013/11/19(火) 第6回大阪Jenkins勉強会

51

Page 52: 窓辺に立つ執事

みんなも手札を揃えよう!!