« 2012年7月 | トップページ | 2012年9月 »

2012年8月

2012年8月31日 (金)

第11回 TFSUG参加

8/30に開催された、第11回TFSUG 「ツールを使いこなすためのツール談義」に参加してきました。

○@riskriskさん:「ツールを使って3年目で分かったこと」
 ツールを導入する側ではなく、利用者からの目線でツール導入時の感想、導入後の状況などについてでした。(スライドはこちら
 中でも個人的に一番感銘したのは「問題を解決しようとしていない、いわゆる死亡フラグ」というところでした。
 「問題に気がつかない」という問題もあるのですが、「気が付いてて解決しない」のは技術者としてよくない状態ということを改めて感じました。

○@matsukawarさん:「VSSからTFSへの移行」
 
 VSSからTFSに移行する事例(計画から移行後のフォローまで)についてでした。
 あまりVSSからの移行事例はネット上にも出てないかと思いますが、移行全体について具体的な内容でしたので、VSSからの移行予定のある方、移行しようかなと思われている方には是非見ていただきたい内容と感じました。
 (スライドはこちら

来月はなんと月2回開催です。
 ・9/10 第55回 Visual Studio 2012 RTM記念 全部VSとTFS
  なぜか「第55回」ですがw、kaorun55さんによる独演会です。
 
  TFS ExpressでのALM/Fakeライブラリ/C++での単体テストなど、ネタたくさんの内容です。

 ・9/20 第12回 TOC厨のプロセス運営
  
  こちらの方面では有名な@shibao800さんと@changeworldさんによるプロセス運営の考え方についてです。
  有償セッションに匹敵する濃い内容が聞けるのではないかと期待してます。

2012年8月25日 (土)

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

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も条件に含めてください。

2012年8月21日 (火)

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

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

2012年8月19日 (日)

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でも使えるようにしてほしいものです。

« 2012年7月 | トップページ | 2012年9月 »

無料ブログはココログ