第4回 TFVCとGitのデプロイ、ビルド、テスト連載:TFVC vs Git(2/8 ページ)

» 2015年08月03日 05時00分 公開
[亀川和史]

ビルド定義の作り方

 現時点では新しいビルドシステムのビルド定義はVSから作成、実行できない。VS Onlineの[BUILD]タブでビルド定義を作成する。ビルド定義の作成に関しては、GitとTFVCで大きく違うところはない。ほとんど共通なので、差分についてのみ適宜紹介する。

●VSからの作成方法

 新しいビルドシステムは現在VS 2013 Update5から作成および、実行することができない。VS 2015ではチームエクスプローラーから作成することが可能だが、テンプレートを使用することができない。

VS 2015のチームエクスプローラー VS 2015のチームエクスプローラー
  (1)Webポータルを呼び出し、何も定義されていない新規テンプレートを作成する。

 すでに用意されているテンプレートから作るとかなり楽なので、Webポータルから作成する方法をお勧めする。

[BUILD]タブ

 上でも述べたように、新しいビルドシステムのビルド定義はVS Onlineの[BUILD]タブで作成する。

VS Onlineの[BUILD]タブ VS Onlineの[BUILD]タブ
  (1)ビルド定義を追加する。
  (2)新しいビルド定義を追加/表示する。
  (3)従来のXAMLビルドを追加/表示する。
  (4)選択したビルド定義の一覧を表示する。

 左側のペーンにある[Build definitions]の下の[All build definitions]をクリックすると、新しいビルドシステムの定義が一覧され、[XAML definitions]の下の[All build definitions]をクリックすると従来のビルドシステムにおけるビルド定義が表示される。[XAML definitions]はVSからしか作成できず、逆に新Buildシステムでは本記事執筆時点ではWebからしか作成できない。

 緑の十字をクリックすると、ビルド定義の作成が開始され、次の画面が表示される。

テンプレートの選択画面 テンプレートの選択画面
  (1)ビルドテンプレートを表示する。
  (2)展開テンプレートを表示する。
  (3)テンプレート一覧が表示される。
  (4)選択したテンプレートを使用する。
  (5)画面を閉じる。

 上の画面から分かるように、いくつかの種類のビルドテンプレートがあらかじめ定義されている。冒頭で説明した通り、用意されているテンプレート全てのビルドがVS Onlineでビルド可能になっているわけではない。例えば「Xamarin.iOS」や「Xcode」のようにMacが必要となるビルド定義はMacでビルドエージェントを実行する必要がある。エージェントの構築方法は後述する。

 なお、後述するサポートされているツールを組み合わせて、自分で新しいテンプレートを作成することも可能だ。

 まずは[Visual Studio]テンプレートを選択して、[OK]ボタンを押してみよう。すると次の画面のようになる。

新規ビルド定義の作成画面 新規ビルド定義の作成画面
  (1)ビルド対象のソリューションファイル名を指定する。
  (2)msbuildコマンドに指定するコマンドラインオプションを指定する。
  (3)ビルド対象のプラットフォーム名(x86やx64など)を指定する。マクロの「$(BuildPlatform)」を指定しておけばビルド時自動的に設定される。
  (4)ビルド対象の構成(DebugやReleaseなど)を指定する。マクロの「$(BuildConfiguration)」を指定しておけば、ビルド時自動的に設定される。
  (5)ビルド時出力ファイルを削除する。
  (6)NuGetパッケージを復元する。
  (7)使用するVSのバージョンを選択する。
  (8)使用するMSBuildを64bitか32bitのどちらにするか選択する。
  (9)プロジェクトの詳細を記録する。
  (10)ビルドの設定を有効にする。
  (11)エラーが発生してもビルド処理を継続する。
  (12)必ず実行する。

 なお、選択したテンプレートに応じて、すでに処理(ビルドステップ)が組み込まれている。上の画面の中央のペーン([Add build step]リンクの下)に表示されているのがそうだ。[Visual Studio]テンプレートの作成直後はソリューションのビルド、テストの実行、デバッグ用シンボルの発行、生成ファイルのコピーがビルドでは行われるようになっている。[Visual Studio]テンプレートで組み込まれるステップはビルドに関連したもののみだが、デプロイ用の定義も用意されているし、このステップにデプロイのタスクを追加することにより、ビルドからデプロイまで一気に実施することも可能だ。

 [MSBuild arguments]欄にはmsbuildコマンドに渡すコマンドラインオプションを指定できる。通常は指定する必要はないが、AzureやIISへのデプロイを行う場合、引数でパッケージを生成するオプションを指定する必要がある。以下のオプションをそのままコピーして貼り付ければよい。

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"


AzureやIISへのデプロイを行う場合に、[MSBuild arguments]欄に指定するコマンドラインオプション

 デプロイタスクをビルド定義に組み込む方法は後述する。

ビルドオプション指定

 ビルド定義作成画面の[Options]タブでは、ビルドオプションを指定できる。

[Options]タブではビルドオプションを指定する [Options]タブではビルドオプションを指定する
  (1)複数設定のビルドを一度に実行する。
  (2)ビルドする組み合わせを指定する。ここでは[Variables]タブで定義されているBuildConfigrationやBuildPlatformといったマクロ値を指定する。
  (3)ビルドを並列で実行する。
  (4)一つの構成でエラーが発生してもビルドを継続する。

 このタブの一番上にある[MultiConfiguration]チェックボックスをチェックすると複数のビルドを同時に実行できる。その下にある[Continue on Error]にチェックしていれば、一つの構成のビルドが失敗しても、他の構成のビルドは継続される。

ビルドリポジトリ選択

 [Repository]タブではビルドで使用するリポジトリを指定する。

[Repository]タブでは使用するリポジトリを指定する [Repository]タブでは使用するリポジトリを指定する
  (1)ビルドするリポジトリを選択する。TFVC/GitHub/外部のGitのいずれかから選択可能。
  (2)ビルドするリポジトリの名前を選択する。VS Onlineの場合、初期状態でチームプロジェクトのリポジトリ名が設定されている。
  (3)リポジトリの出力先を消去するかどうか。
  (4)該当のマップ、もしくはクロークを削除する。
  (5)指定したリポジトリのビルドに必要なワークスペースの位置のマッピングを指定する。ソリューションが一つだけであれば、そのソリューションファイルのあるフォルダーのみマップに指定すればよい。高い階層のフォルダーをマップするとコピーに時間がかかる。
  (6)ビルド処理に必要のないフォルダーをクロークとして指定する。
  (7)クローク、もしくはマップするフォルダーを追加する。

 このタブではソースコードを取得するリポジトリを指定する。新しいビルドシステムではビルドの独立性が高くなった。[Repository Type]ドロップダウンでは以下の3通りのいずれかが選択可能だ。

  • 現在のチームプロジェクトで選択したTFVCかGit
  • GitHub
  • 外部のGit(通信ができれば組織内のGitでも可能)

 [Repository type]はドロップダウンによる選択式になっており、ビルド定義ごとにいずれか一つのリポジトリを指定する。ただし、上の画面はTFVCを使用したチームプロジェクトのものであり、VS OnlineのリポジトリをGitで作っている場合は設定が少し異なっている(以下の画面を参照)。

Gitチームプロジェクトの場合の[Repository]タブ Gitチームプロジェクトの場合の[Repository]タブ
  (1)チームプロジェクトのGitを選択した場合は最初の選択肢が[Git]になる。
  (2)Gitのリポジトリ。
  (3)既定のブランチ。
  (4)ビルド前に作業フォルダーを削除するかどうか。
  (5)サブモジュールも含めてチェックアウトするか。

 チームプロジェクトをGitで作った場合、リポジトリのブランチを選択可能な一方で、TFVCとは異なり、マップやクロークの項目がなくなっている。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。