窓辺に立つ執事

3,407 views

Published on

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

Published in: Engineering
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,407
On SlideShare
0
From Embeds
0
Number of Embeds
959
Actions
Shares
0
Downloads
11
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

窓辺に立つ執事

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

×