Upload
kaoru-nakamura
View
28
Download
2
Embed Size (px)
Citation preview
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
2015年7月22日
日本マイクロソフト株式会社 セミナールーム C・D
中村 薫
自己紹介
中村 薫TFSUG主宰
フリーランスで主にDepthセンサー系の仕事をしています
アプリケーション開発、講演、
ハンズオンセミナー、執筆など
Microsoft MVP for Visual Studio ALM (Apr 2012 - Mar 2014)
Microsoft MVP for Kinect for Windows (Apr 2014 - Mar 2016)
http://www.naturalsoftware.jp/
2
お品書き
1. Visual Studio Online(VSO)とは
2. Unityアプリの開発環境
3. Unityアプリのバージョン管理
4. Unityアプリの自動ビルド
5. Unityアプリの自動テスト
6. Unityアプリの継続的インテグレーション
今日の概要
•Unityを題材にしていますが、Visual Studio Onlineの外部ビルドという側面があります。
•ほかの自動ビルド、自動テストでも考え方は使えます。
今日の流れ
1. Unityアプリを
2. Visual Studio Onlineでビルドして
3. 実行ファイルを作ってもらう
今日使うもの
• 開発用環境• Unity 5.1.2f1
• Visual Studio 2015
• Visual Studio Tools for Unity 2015
• Visual Studio Online
• GitHub for Windows
• ビルド用環境• 開発環境と同じもの
• できるだけ別のPCが良い
Visual Studio Online(VSO)とは
Visual Studio Onlineとは
https://www.visualstudio.com/products/what-is-visual-studio-online-vs
Visual Studio Onlineとは
• コードリポジトリ、タスク管理、テスト管理、自動ビルドなど、開発に必要な機能をそろえたツール。
• Team Foundation ServerはVisual Studio Onlineのスナップショット。
• リポジトリはGitを選択可能でpull request機能あり。
• タスク管理はScrumを利用可能。タスクカンバンも。
• 自動ビルドはWindowsアプリならVSO上で、Windows以外でもビルドサーバー上で可能。
• 無償利用から始められ、ビルドやテストでの従量課金など。
https://www.visualstudio.com/products/what-is-visual-studio-online-vs
Unityアプリのバージョン管理
Unityアプリの特長
•動画や画像、音声データなどが多く入るため、データ量が大きくなる
•1ファイルあたりのサイズも大きい
ファイル容量の増加
Unityアプリのバージョン管理どうしてる?
• GitHub?
• Bitbucket?
• Visual Studio Online?
• Dropbox?
• Gitリポジトリ?
• SVN?
• ファイルサーバー?
• してない?
有名なリポジトリサービス
•GitHub•ファイルあたり100MB
•Bitbucket•ファイルあたり2GB
•Visual Studio Online•いまのところ上限なし•テラバイトくらいまでは大丈夫らしい
VSOでのGitリポジトリ作成からコミットまで
VSOでのGitリポジトリ作成からコミットまで
1. VSOでサイトを作成
2. Visual Studioでclone
3. GitHubからUnity用のgitignoreを取得
4. GitHub for Windows でcommit,push
※個人的に好きな手順です
VSOでサイトを作成
https://www.visualstudio.com/products/what-is-visual-studio-online-vs
コラム:リポジトリの選択基準
• Team Foundation Version Control(TFVC)• Visual Studioのみで開発するようなプロジェクト
• リポジトリに入れるファイルを自動で選択
• Git• その他
※個人的な基準です
Visual Studioでclone
自動的にVisual Studioが起動し、リポジトリをcloneする
Unityプロジェクトを作成
GitHub for Windows でcommit,push
Unityアプリの継続的インテグレーション
前提
•現状ではVSO単体でUnityアプリのビルドができないので、外部のビルドサーバーが必要• VSOのビルドサーバーにUnityがないため
外部マシンを利用したCIの種類
•Service Hookを利用したビルド•外部のJenkinsを起動する• Jenkinsがインターネット上に存在する必要あり
•vso-agentを利用したビルド•コマンドラインからビルドする•ビルドマシンがローカルでも良い
Service Hookを利用したビルド
Service Hookpush
vso-agentを利用したビルド
vso-agentの呼び出しpush
Unityでの自動ビルド
•Unityにはバッチモードがある
•コマンドライン引数を組み合わせることで、自動ビルドや自動テストが可能
Unityでの自動ビルド
http://docs.unity3d.com/ja/current/Manual/CommandLineArguments.html
Unityの自動ビルド
ビルドスクリプト
デモ時注意:push時にUnityを閉じておくこと
http://docs.unity3d.com/ja/current/Manual/BuildPlayerPipeline.html
コマンドラインからビルド
> "C:¥Program Files¥Unity¥Editor¥Unity.exe“-quit -batchmode -executeMethod MyEditorScript.PerformWindowsBuild
Unityの自動テスト
Unity Test Tools
• NUnitベース
• Unityエディター上でテストができる• ユニットテスト
• インテグレーションテスト
https://www.assetstore.unity3d.com/jp/#!/content/13802
Unityエディター上でテスト
Unityエディター上でテスト
コマンドラインからテスト
> “C:¥Program Files¥Unity¥Editor¥Unity.exe” -quit -batchmode -executeMethod UnityTest.Batch.RunUnitTests
テスト結果
これで準備ができました
VSOの設定
手順
1. vso-agentをインストール
2. ビルド定義を作成
3. ビルド
vso-agentをダウンロード
PowerShellを実行
vso-agentの設定
vso-agentが接続された
ビルド定義を作成
• 空のビルド定義
• Utility/Command Lineを追加• 自動ビルド用
• Utility/Command Lineを追加• 自動テスト用
• Test/Publish Test Result• 自動テスト結果を保存
• Build/Publish Build Artifactsを追加• ビルド成果物を保存
自動ビルドの設定
自動テストの設定
テスト結果を保存する
成果物を保存する
ビルドを実行する
ビルド経過が表示される
ビルドが成功する
ビルド結果を確認する
テスト結果を確認する
成果物をダウンロードする
自動ビルドされた成果物
うまくいかないとき
•ビルドマシンでコマンドラインからビルドを試す
•Unityのバージョンは同一?
今の課題
•ビルド、テストが失敗した時の理由がわからない
•テスト結果が反映されない
参考
• Build your Visual Studio projects• https://www.visualstudio.com/get-started/build/build-your-app-vs
• Jenkins with Visual Studio Online• https://www.visualstudio.com/get-started/integrate/service-hooks/jenkins-and-vso-vs
www.naturalsoftware.jp
62