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する
gitginoreを探す
https://github.com/github/gitignore
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

Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション