redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

Team Foundation Server のXAMLでない方のビルド定義の作成・実行を1から解説する

前回からあっという間に2か月以上たってしまった。細く長くがんばろう。
2015以降のTFSではXAMLビルドは推奨されない*1方式になるので、新しいビルド環境の構築を試してみた。

環境:Team Foundation Server 2015 Update 4、Windows Server 2012SQL Server 2012

目次

プールの追加

画面上から歯車アイコンを押して、コントロール パネル画面に遷移する。

f:id:redwarrior:20180808111646p:plain

コレクション管理ページの表示をクリックして、コレクションのプロファイル画面に移動する。

f:id:redwarrior:20180808114633p:plain

エージェントキュータブをクリックする。新しいプールとキューを作成するために、新しいキューリンクをクリックする。

f:id:redwarrior:20180808115714p:plain

ダイアログで「新しいプールの作成」ラジオボタンを選択し、プール名に名前(今回は「VSPool」とする)を設定する。(上記画像は既に作成済)

f:id:redwarrior:20180808115644p:plain

プールの作成に失敗した場合は、権限が不足しているので、Team Foundation 管理者ユーザにプールを作成してもらう。

権限の設定

ビルド等に必要な権限を設定するため、プールの管理リンクをクリックするか、コントロールパネルをクリックしてサーバーの管理画面に遷移して、エージェントプールタブをクリックする。

f:id:redwarrior:20180808120359p:plain

すべてのプールに新規作成したプールが表示されるので選択する。エージェントにはまだ何も表示されていない。役割をクリックすると、役割として「エージェントプール管理者」、「エージェントプールサービスアカウント」が表示される。両方にビルドエージェントを起動するユーザを追加する。

f:id:redwarrior:20180808120449p:plain

次にコレクションのプロファイル画面のエージェントキューに戻って、新規作成したプールを選択して、役割をクリックする。役割として「エージェントキュー管理者」、「エージェントキューユーザー」が表示される。エージェントキューユーザーにビルド定義を作成するユーザを追加する。「エージェントキュー管理者」は変更しなくて良い。

f:id:redwarrior:20180808120827p:plain

エージェントのインストール

今回はお試しという事で、開発で使用しているPCにエージェントをインストールして、手動でビルドを試す。 エージェントのダウンロードをクリックして、ビルドエージェントをダウンロードする。

f:id:redwarrior:20180808133433p:plain

ダウンロードした圧縮ファイルを解凍する。するとAgentフォルダとConfigureAgent.cmdファイル、RunAgent.cmdファイルが作成される。

f:id:redwarrior:20180808133608p:plain

初期設定のために「ConfigureAgent.cmd」を管理者として実行する。 コマンドプロンプトに表示された内容に従って、値を設定すると「settings.json」ファイルが作成される。

f:id:redwarrior:20180808134311p:plain

表示内容と設定値は以下の通り。

表示内容 設定値
ローカルエージェントの設定が更新されます 設定を更新したいので「Y」を入力
エージェント名 エージェント一覧に表示したい名前を入力する。PC名を含めると実行場所がわかりやすい
Team Foundation ServerのURL http://xxx:8080/tfsといったURL
どのエージェントプールに対して構成しますか? 作成したプールの名前(「VSPool」)を入力
エージェントの作業フォルダのパス 既定のまま
エージェントをWindowsサービスとしてインストールしますか? 今回は手動ビルドを試したいだけであり、エージェントも手動で起動・終了したいので「N」を入力

設定が完了すると、コントロールパネルのエージェントプールタブか、コレクションのプロファイル画面のエージェントキューにエージェントが表示される。

f:id:redwarrior:20180808134626p:plain

エージェントの起動

「RunAgent.cmd」を管理者として実行すると、コマンドプロンプトが開き、ビルドエージェントが起動する。

f:id:redwarrior:20180808135057p:plain

画面のエージェントの名の左端が緑色になる。

f:id:redwarrior:20180808135301p:plain

緑色になった状態でコマンドプロンプトを閉じると、画面のエージェントの名の左端が赤色になる。

ビルド定義の作成

ビルド定義の作成は簡単。+アイコンをクリックする。

f:id:redwarrior:20180808135652p:plain

画面上からVisual Studioを選択する。

f:id:redwarrior:20180808135814p:plain

リポジトリとブランチ、エージェントキューを選択する。作成したビルド定義は保存しないと残らないので注意する。

f:id:redwarrior:20180808135830p:plain

テンプレートに従って作成すると、最初にNuGetの復元を行うためにNuGetインストーラーが設定されている。必要なパッケージはリポジトリに登録済で、NuGetの復元は不要なのでビルドステップから削除する。

f:id:redwarrior:20180808140140p:plain

XAMLビルドでは、NuGetの復元をやめるためにビルドプロセステンプレートをカスタマイズしなければならなかったのでここは楽になった。

Visual Studioのビルドの設定にも「NuGet パッケージの復元」があるため、チェックされていないことを確認する。ちなみにNuGetの復元は別のステップになったので、ここのチェックボックスはチェックされることは基本的に無さそう。

f:id:redwarrior:20180808140338p:plain

ビルド以外にも様々な設定があり、ビルドステップも色々あるけど、上記以外は特に変更はしていない。保存アイコンをクリックしてビルド定義名を入れて保存する。

ビルドの実行

ビルドエージェントを起動した状態で、「ビルドをキューに挿入」をクリックする。

f:id:redwarrior:20180808140711p:plain

画面ではそのままOKを押す。

f:id:redwarrior:20180808140923p:plain

画面が変わりビルドが始まって、そのままビルドが成功した。ビルドが終了しても、エージェントを起動したコマンドプロンプトは開いたままなので、そのまま次のビルドを実行することも出来るし、終了する場合は、Ctrl+Cでコマンドプロンプトを閉じれば良さそう。

f:id:redwarrior:20180808141436p:plain

f:id:redwarrior:20180808141450p:plain

感想

エージェントプールの設定や、ビルドエージェントのインストールが多少手間がかかるけど、ビルドの実行自体はあっさりと成功した。

余談だが、画面コピーを取ってモザイク編集するのに、Monosnap というソフトを使ったら意外と便利だった。

参考資料

www.slideshare.net

*1:TFS 2018 Update 2では復活したみたいだが