開発環境を全てクラウドで! その2

開発環境を全てクラウドで! その1」の続きです。

9.デスクトップクラウド上にTFS(Serverの方です)をインストールします
  これ、結構鬼門でした。
  SkyDrive経由でISOイメージを展開すればいいかなと思ってましたが、ブラウザからは300MB/Windows ストアアプリからは100MBの制約があり、1.2GBぐらいあるTFSのISOイメージはアップロードできませんでした。
  とりあえず、今回はデスクトップアプリのSkyDriveクライアントを使って上げてみました。
  ※「お名前.com デスクトップクラウド for Windowsアプリ」環境にソフトをインストールするのは問題ないとのことでした。

10.ビルドサービスを構築します
   構築方法については、「Team Foundation Serviceのビルド環境をローカルに構築する」を参考にしてみてください。

11.ビルド定義を作成します
  Visual Studioからビルド定義を作成します。
  変更点は、ビルドコントローラーをデスクトップクラウドマシンに変更することと、ビルド出力をソース管理フォルダにすることです。

129

12.ビルドを実行します
   しばらくすると、ビルドが正常に完了するはずです。

136

こんな感じで、開発に関するすべての環境がクラウド上で構築できてしまいました。
今回はWindowsストアアプリで試してみましたが、Javaなどの.NET以外の開発環境も構築できると思います。
凄いことになってます!!

※現時点でTFServiceのBuildサービスがまだPreviewであることと、価格が未定なため、今後この環境が構築できない/有償となる可能性があります。実際に構築される際にはマイクロソフト/GMOインターネット株式会社様に確認してください。

開発環境を全てクラウドで! その1

先日、クラウド上でTeam Foundation Serviceが正式稼働したばっかりですが、開発環境でもう一つクラウド上で稼働しているサービスがあります。
「お名前.com」で有名なGMOインターネット株式会社様から「お名前.com デスクトップクラウド for Windowsアプリ」が提供されています。
これはクラウド上でVisual Studio 2012環境が提供されるサービスで、ローカルにWindows 8がなくてもWindows Storeアプリなどを開発できるとというものです。

・・・となると、「開発環境を全てクラウド上で構築できるのでは?」と思い、ちょっと構築してみました。
※ブログ掲載については、GMOインターネット株式会社様に快諾頂きました。ありがとうございます。

1.TFService上にアカウントを登録しておきます。
2.「お名前.com デスクトップクラウド for Windowsアプリ」に申し込みをします。
  通常、10分から2時間ぐらいでアカウントが作成されるようです。
  今回は14日間無償トライアルで申し込みしました。
3.手続きが完了すると設定完了メールが送付されますので接続してみます。
  RDPクライアント/ブラウザの両方で接続できます。
4.ちゃんと接続できたら、Visual Studio 2012を起動し、Windowsストアアプリプロジェクトを作成します。ビルド/デバッグ実行ができることを確認します。
5.ブラウザでTFServiceに接続し、プロジェクトを作成します。
  ここでは「CloudDevEnv1」を作成します。



138_3




139

6.Visual Studio 2012のチームエクスプローラーから、TFServiceに接続します。
  ローカルサーバとの違いは、続先サーバの名前に「https://~.visualstudio.com」と指定することぐらいです。

111

7.TFService上に作成したチームプロジェクトに、4.で作成したプロジェクトを追加します。

113

8.追加したプロジェクトをチェックインします。



115_2

長くなったので、分割します。

SharePoint Foundation 2010はWindows Server 2012ではサポートされない

Windows 8/Windows Server 2012/Visual Studio 2012/Team Foundation Server 2012とRTM版が一通りMSDNで公開されたので、そろそろ環境作ってみようかとしたところ、さっそく引っかかりました^ ^;

「まずはサーバ構築」と思い、Windows Server 2012にTFS2012をインストールし、構成ウィザードで「標準の単一サーバ」を選択。
サービス用アカウントを指定し、次画面でSharePointのインストール可否チェックの終了を待っていると、なんとエラーが。



015_2

「SharePoint Foundation 2010はWindows8にインストールできません。」

ですか...orz
(インストーラー内部では、Windows Server 2012は「Windows8Server」として認識していました)

困ったなと思ってるところ、@kkamegawaさんより素早いフォローを頂きました。(ありがとうございます。<(_ _)>)
原因はタイトル通りですが、「Windows Server 2012 では SharePoint Server 2010 がサポートされない」ということです。(KB2724471)
KB上では、インストールに失敗するとか、インストールできてもエラーになるとかという記載になっていますが、TFSの構成ウィザードからインストールする場合は事前チェックでインストーラーすら実行できないようになっています。
今のところ回避策はないようで、手っ取り早いのはWindows Server 2008 R2にTFS2012環境を構築するぐらいみたいです。
SharePoint Foundation 2012とかが出たときにまた確認してみたいと思います。

複数サーバでのTFS構築(2)

前回の続きです。

別サーバにアプリケーション層のみの追加を行います。
構築ウィザードで「アプリケーション層のみ」を選択します。
(余談ですが、このウィザードがあるおかげで構築がほんとに楽です)

指定するのは接続先データベースのみです。

007

ここで注意点ですが、元々のTFSサーバのサービスアカウントがドメインユーザ以外(NT AUTHORITY\LOCAL SERVICEなど)だと、こんなエラーになりますので、事前にサービスアカウントを変更しておきます。

008

自分はこれで半日ぐらい悩みました。ドメインアカウントを使用しろとMSDNにもちゃんと記載されているのですが、すっかり忘れました。

あとは構成チェックだけなのですが、もう1点エラーになる可能性があります。
AD環境ではほとんどないと思いますが、サーバがドメインに追加されていないとエラーになります。

009

構成ウィザードが正常に終了すれば、2台のTFSサーバで運用できます。

複数サーバでのTFS構築(1)

今回も検証ネタです。
「1台のSQL Serverに複数のTFSが接続できるか?」という話があったので確認してみようとしたのですが、ちょっと引っかかるとことがあったのでメモ代わりに残そうかと。
(今回はTFS2010で確認しましたが、おそらくTFS2012でも同じだと思われます)

TFSの構築パターンとしては
 ・基本
 ・標準の単一サーバ
 ・詳細
 ・アプリケーション層のみ
の4種類になりますが、複数サーバ構成ができるのは
 ・詳細
 ・アプリケーション層のみ
の2種類になります。

結論としては、TFSの高可用性のためアプリケーション層を複数サーバに構築すること(Team Foundation Serverファームの作成)は可能ですが、<del>SQL Serverをケチって</del>SQL Serverの台数を最小化するために、構築済みのTFS用SQL Serverを流用することはできないということになります。

具体的には、「とある部署でTFSが構築済みで、コレクション名としてDefaultCollectionを使用しているが、別部署でTFSを使用することになった。」といったときに
○高負荷が予想されるので、サーバを分離したい。コレクション名はDefaultCollectionでなくてもいい。
 →アプリケーション層サーバの追加でOK
○コレクション名をDefaultCollectionで使いたいし、SQL Serverは共用するけど完全に独立して運用したい
 →「詳細」パターンでのセットアップ→NG
となるということです。
(個人的にですが、部署単位で運用を分離したい場合、コレクション単位で部門ユーザを設定し、ビルドサーバは別々に構築するのがいいかなと思います)

あと、複数サーバで構築する際の大前提として、「TFSのサービスアカウントがドメインアカウントで実行されている」というのがありますので、ワークグループ環境では構築できません。

MSDN内に複数サーバでのTFS構築に関する資料がありますので、詳細はそちらで確認してみてください。
(「シナリオ : 既存のインフラストラクチャまたは複数のサーバーを使用した Team Foundation Server のインストール」)

参考程度ですが、NGパターンで構築した場合にどうなるかです。
2台目のサーバにTFSをインストールし、構成ウィザードを「詳細」で進めます。
データベースは1台目に構築済みのものを使用しますので、「SQL Server インスタンス」には1台目のサーバ名を入力します。

005

その後の設定は、プロジェクトの要望に合わせて適用に設定します。
こんな感じで最後の構成チェックまで進められますが、チェックでエラーになってしまいます。

006

エラーメッセージを見ると、データベース「Tfs_Configuration」が作成できないとでています。
このデータベースはコレクション別ではないので、どうしようもありません。

次は、OKパターン(アプリケーション層の追加)の構築概要についてです。

ビルドコントローラーが削除できないとき

TFS管理コンソールからコントローラーを削除しようとしたとき、こんなエラーに出くわしました。

001

別の仮想マシンにエージェントだけ構築していたのを忘れて、その仮想マシンをサクッと消してしまったのですが^ ^;

こんなときは、TFSに格納されている管理情報を編集してしまいます。
※あくまで自己責任で。

TFSのDBサーバで作業をします。(または、TFSのDBサーバに接続できる環境で)

SQL Server Management Studioを起動し、TFSのDBに接続します。
データベースの中から、「Tfs_<コントローラーが接続しているコレクション名>」を探します。
(通常は「TfsDefaultCollection」)

エージェント情報が格納されているテーブルは「tbl_BuildAgent」になります。
まずは格納されているレコードを確認します。
「tbl_BuildAgent」を右クリックし「上位1000行の選択」を選択すると、登録されているエージェントの一覧が表示されます。

002


003

削除対象のエージェントは「DisplayName」に登録されている内容で大体察しがつくと思いますが、よくわからない場合は、削除対象のコントローラーの「ControllerId」を「tbl_BuildController」から確認します。

004

あとは、クエリーで次のSQLを実行してレコードを削除します。(もしくは「上位200行の編集」で直接削除)
DELETE FROM tbl_BuildAgent WHERE ControllerId=[削除対象のコントローラーID]

※別な理由で、ゾンビエージェントだけ削除するときには、AgentIdも条件に含めてください。

AD環境でTFS2012にユーザを登録するとき

ちょっとした小ネタです。

AD環境でTFS2012を構築したあと、ユーザ(グループ)を登録する際に、ちょっと変な動作になるところがあります。
内容は、ユーザ(グループ)を選択する画面にユーザ(グループ)が表示されないので選択できないというものです。

とりあえず、ADに開発者ユーザと開発者用グループを作成します。
・デフォルトで存在するOUの「Users」に開発者ユーザ「Dev01」「Dev02」とグループ「TestDevelopers01」を作成し、TestDevelopers01にDev01とDev02を追加します。

011_2

・次に新規にOU「TestDevelopers」を作成し、その中に開発者ユーザ「Dev11」「Dev12」とグループ「TestDevelopers10」を作成後、TestDevelopers10にDev11とDev12を追加します。

012

ユーザを作成したら、クライアントからチームプロジェクトを作成し、そのチームプロジェクトに対してグループメンバーシップ(ユーザ設定)を設定します。

013

VS2010と違い、グループメンバーシップの設定はWebで設定します。

014

今回は、作成したチームプロジェクト用チームグループ(「TestTFSProject01」)に対してユーザ(グループ)を追加します。
画面真ん中あたりの「追加...」を押下し、「Windowsユーザまたはグループの追加」を選択します。

015

ユーザ(グループ)の追加画面が表示されますので、「参照」を押下します。

016

ユーザ(グループ)の一覧が表示されるのですが...

017

なぜか、最初に登録したユーザ(グループ)が表示されません。
表示されたのは、セットアップ時に作成したデフォルトのAdministratorユーザ(名前を変更したので、イメージ編集してます)と、TFSサービス実行用に作成した「TFSAdmin」だけです。

「選択できないと登録できない!」と思ったのですが、ダメ元で「TestDevelopers01」を直接入力してみます。

018

入力欄の下に「検索結果がありません」と表示されるので、やっぱりダメかと思いましたが、Enterキーを押してみると...

019

ちゃんと登録候補として認識されました^ ^

残りの「TestDevelopers10」も直接入力します。

020

この状態で「変更の保存」を押下すると、ユーザ(グループ)が登録されます。

021

ちなみに、チームプロジェクト作成後、サーバの管理コンソールからはちゃんと選択できます。

022

できれば、サービスパックとかのタイミングで治ってほしいものです。

Team Foundation Serviceのビルド環境をローカルに構築する

Azure上でTFSの機能が使えるTeam Foundation Service(長いのでここではTFServiceとさせてください^ ^;)は、現在Preview版で誰でも使えます。(Microsoftアカウントが必要になります。)
チームプロジェクトを作成し、ローカルで作成したソリューションを登録すればビルドもAzure上でできるのでほんとにお手軽なのですが、個別のライブラリ(市販のパーツなど)を使用したいときには、ビルドサーバにライブラリを登録する必要があります。
方法としては
 ・ソース管理にライブラリ用フォルダを作成しておき、参照先を指定する
 ・ローカルのビルド環境を作成し、その環境にライブラリをインストールする
のどちらかになると思います。
今回は、ローカルのビルド環境を作成してみます。

※2012/08/19現在、TFServiceはPreview版ですので、RTM版とは異なる可能性があります。
 また、ライセンスについてはMSサポートに確認してください。

○TFS2012のインストール
 まずは、TFS2012をインストールします。
 ビルド環境のみなので、OSはクライアントOSでもかまいません。
 また、サーバOSにインストールする場合、SharePointFoudationも必要ありません。
 インストール完了後に自動起動されるウィザードはキャンセルしてください。
 ※確認はしていませんが、TFS2012 Expressは使えないと思います。
  (単体サーバでの使用が前提条件となっているので)

○Windows 8 SDKのインストール
 .NET Framework 4.5のビルドを正常に行うためには、ここからインストーラーをダウンロードします。
 インストーラーを実行すると、各種ファイルがネットからダウンロードされてインストールされます。
 ※今回自分が確認したのはWindows Server 2008 R2でしたが、.NET Framework4がターゲットのプロジェクトの場合はWindows 8 SDKなしでも正常にビルドできました。

○個別ライブラリのインストール
 ビルドするまでであればいつでもいいと思いますが、ビルドサーバ構築後にインストールすると再起動が必要になるかもしれないので、最初に個別ライブラリもインストールしておきます。
 (Windows Phone SDKとかも同様です)

○ビルドサービスの構成
 普通のビルドサーバと異なるのは、
 ・接続先サーバの指定をURLで直接行う
 ・接続時に認証が必要となる
 ことです。
 Team Foundation Server 管理コンソールから「ビルド構成」を選択し、「インストール済みフィーチャーの構成」をクリックすると、ウィザードが起動します。
 チームプロジェクトコレクションの選択画面で、参照先のサーバを「https://<使用するTFServiceのURL>」にします。

<接続先サーバの指定画面>
 「サーバー」ボタンを押下して、接続先サーバを追加します。

009_2

<接続先サーバの追加画面>
 「追加」ボタンを押下し、接続先Team Foundation Serverの名前のところにTFServiceのURLを指定します。

010

 TFServiceへのURLを指定し「OK」ボタンを押下すると、以下の接続中画面が表示されますので、ちょっと待ちます。

011

 TFServiceへの認証画面が表示されるので、TFServiceにログインする際のユーザ名/パスワードを入力し、サインインします。

012

 認証が完了すると、接続先サーバ追加画面に戻ります。

013

 接続先サーバの設定が完了すると、接続先チームコレクションの一覧が表示されますので、チームコレクションを選択し、「接続」ボタンを押下します。
(DefaultCollectionしかない?)

014

あとは、普通のビルドサーバと同様に設定していきます。
(エージェントの作成も忘れずに)

○ビルド定義の設定
 ビルド定義で、ローカルビルドコントローラーを使用するように設定します。
 
 「ビルドの規定値」にあるビルドコントローラーとして、ローカルサーバを指定します。
 (「Hosted Build Controller」がTFServiceで通常使用するビルドコントローラーです)

015_2

この状態でビルドを実行すると、こんな感じでローカルサーバでビルドが実行できます。

016

ほんとにお手軽に構築できます。
残念なのは、現時点ではTFS2010が使えないことです。
TFS2010で同様に環境構築してみたのですが、接続先サーバの追加時にエラーになってしましました。><

007

ぜひTFS2010でも使えるようにしてほしいものです。

TFS2010でWindowsPhone7プロジェクトを自動ビルド

とある方から「Windows Phoneでも自動ビルドとか自動テストとかできますか~?」と聞かれ、「できます」と返答させて頂いたのですが、ちょっと気になって実際に確認してみました。
自動ビルドについては、「準備する環境に条件がある」だけでした。

○確認環境について
 ・ワークグループ環境
  AD環境でもあまり内容は変わりません。
 ・ビルドサービス用アカウントを別途作成
  今回は「DTFSBuild」というユーザを作成しています。
  権限はUsersで問題ありません。
 ・TFSサーバは構築済
 ・プロジェクトコレクションのビルドサービスアカウントにビルドサービス用アカウント(今回はDTFSBuild)を追加

005

○OS/SDKのインストール
 
 まず、ビルドするためにはビルド環境にSDKをインストールする必要がありますが、SDKのサポートOSはWindows VistaとWindows 7ですので、サーバ系OSは使えません。
 TFSはクライアントOSにもインストール可能ですのでWindows7環境を作成します。
 ここがこのネタの最大のポイントになるのですが、必ず「32bit環境」で作成
してください。
 Windows Phone7ネタというよりかはSilverlightネタになるのですが、「64bit版のMSBuildではSilverlightプロジェクトがビルドできない」という問題があります。
 
 ※Visual Studio Engineering Teamのブログに64bit版MSBuildでのネタが掲載されています。
 64bit版Windows7でビルド環境を構築し、ビルドを実行すると、こんな感じでエラーになります。

004

 自分はこの原因がすぐにわからず、結構な時間ハマってました。orz

 次に、現時点でのWindows Phone SDKの最新版である7.1をインストールします。

 また、ビルド生成物の出力/共有フォルダを作成しておきます。
 →とりあえずなら共有フォルダ/ローカルセキュリティともに「Everyone:フルコントロール」でOKです。

○TFSのインストール/ビルド構成
 TFS本体のサーバは構築済の前提とし、ビルドサーバのみ構築しますので、インストールする機能を「Team Foundation ビルド サービス」のみ選択してインストールします。

001

 インストールした後は構成ウィザードに従ってビルドサービスを構成します。
 
 「ビルドコンピュータの構成」でビルドサービスを実行するユーザとして「DTFSBuild」を指定します。

002

○TFSチームプロジェクトの作成/Windows Phone7プロジェクトの作成/Windows Phone7プロジェクトの登録
 これらは普通に行ってください。

○ビルド定義の作成
 基本的には普通に作成しますが、他のビルドエージェントで実行されないように、エージエントを固定します。
 ビルド定義の「プロセス」-「エージェントの設定」-「名前フィルター」に、Windows7環境のエージェント名を指定します。
 (通常は「[コンピュータ名] – エージェント1」という名前になります)

003

これで、チームエクスプローラーとかから普通にビルドを実行できるようになります。

Team Exolorer Everywhereのライセンス変更

昔、「Visual Studio Team Explorer Everywhere 2010のライセンス」というタイトルでライセンスについて書きました。
(MSDN Ultimateか、TEEライセンスが必要)

ところが、いつの間にか(2011年8月)ライセンス変更が実施されており、TEEはTFS CALを持っていれば無償で使用できる
ようになっていました。
個人的には、とってもとってもありがたいことです。
TFS 11 Expressの使用条件が満たせるところであれば、Java開発者でも完全無償でTFS環境が構築できます。

※正式には、TEEの紹介ページVS2010ライセンスホワイトペーパーで確認頂ければと思います。