TFS2012ライセンスメモ

明けましておめでとうございます。
つたないブログですが、本年もよろしくお願いします。<(_ _)>

ふとTFS2012のライセンス情報を確認しようとしたところ、2010の情報はよく出てくるんですが、2012についてはあまり出てこなかったので、ちょっとメモ代わりに作成します。
(出てこない理由として、ホワイトペーパー「Visual Studio 2012とMSDNのライセンス ホワイトペーパー」にきれいにまとまっているからかもしれませんが。)

まずは注意事項ですが、ここから以降の内容はあくまで個人的に関心のある内容を勝手にまとめたものですので、実際に導入される際には上記ホワイトペーパーおよびマイクロソフトへの問い合わせにて確認願います。

Lab Management関連は当面自分が使う予定がないので割愛させて頂きます(マテコラ

ここからはまとめたメモになります。
○サーバライセンス1つにつき、1台のサーバに割り当てることができる
 ここで「1台」の対象になるのは「アプリケーション層」です。
 SQL Serverとかビルドサーバを別サーバにインストールしても、アプリケーション層のインストールサーバが1台であれば、ライセンスは1つでよいということです。

○以下のソフトは「任意の数」の「コンピュータ」(サーバではない)で実行できます。
 ・ビルドサービス
 ・SharePoint Extensions
 ・Project Server Extensions
 ・チームエクスプローラー
 チームエクスプローラーが任意のコンピュータにインストールできるのは押さえてませんでした^ ^;

○SQL Server 2012 Standardの1インスタンスをTFS2012のDBとして使用可能(除くExpress)
 TFS 2012 ExpressはSQL Server 2012 Expressを使用するので対象外になります。

○上記SQL Serverライセンスを行使した場合、TFS2012のSQL Server Reporting ServicesはSQL Server CAL不要。
 TFSのレポートのみ利用するユーザは、TFS CALすら不要!

○MSDNライセンス(Professional以上)が付与されたユーザーが1人以上いる場合、VSをビルドサービスの一部としてインストール可能
 MSDNライセンスですのである意味当たり前ですが、「全員」ではなく「1人以上いる場合」というのが有難いなと思います。

○こんな使い方であればTFS CALは不要(但し、Windows Server CAL/SharePoint CAL/SQL Server CAL[TFS付属ライセンス以外で使用した場合]は必要)
 ・作業項目の入力/表示/編集のみ
 ・TFSのレポートにアクセスする
 ・SCOM(System Center Operations Manager)を使用してTFSにアクセスする
 ・Feedback Client for TFSを使用してTFSにアクセスする
 ・TFSの外部に手動で頒布されて静的データを表示する
 ・チームプロジェクトやプロジェクトコレクションの作成などのシステム管理を目的として最大2つまでのデバイスまたは2人までのユーザーがTFSにアクセスする

○TFS Web Accessの機能のうち、TFS CALだけでは使用できない機能
 ・バックログとスプリントの計画ツール
 ・フィードバックの要求と管理機能
 これらの機能を使用する場合、MSDNライセンス(Ultimate/Premium/Test Professional以上)が必要です。
  ※ProfessionalはNG
  参考情報:MSDNの「Web アクセス許可による機能
  (この資料内で「フル」として割り当てできる機能が「TFS CALだけでは使用できない機能」)

○TEE(Team Explorer Everywhere)の「インストール」はライセンスフリー。
 接続ライセンスは今までの内容の通り。(VSとかからアクセスするのと変わらない)
 TFS Web Accessのフル機能を使用しないのであれば、TFS CALとWindows Server CALで使用可能。

といった感じのようです。

まとめた後の感想ですが、
 「Visual Studio 2012 Premium with MSDNサブスクリプション以上が欲しいw」

 TFS Web Accessのバックログとスプリントの計画ツールとかが使えるのはやはり大きいと思います。たとえアジャイル開発ではなくウォーターフォール開発だったにしても、作業状況をこれだけ容易に確認できる機能は使いたいです。
 さらに、VS自体の純粋な機能差も含めて考えるとPremiumがPremiumすぎます
!!
 
 仕事で購入を検討するのであれば、Premiumは選択肢として挙げるべきと思います。

 (でも、この前会社でProfessional購入したばっかりなんですよね...( ;∀;))

2012年まとめ

ALM Advent Calendarが終わり、すっかり気が抜けてますw

早速ですが、今年のまとめをば。
○今年やったこと
・TFSUGでまさかのスピーカー
 TFS初心者があんな場所で話をすることになるとは思ってませんでした。(;´∀`)
 
 PowerToolsとかについてでしたが、MSSCCIに対する反応があったのは意外でした。
・ヒーロー島でまさかのスピーカー
 なんと2ヶ月連続でスピーカーですよ!
 
 TFSの導入例みたいな感じで簡単にお話させていただきました。
・Visual Studio 2012/TFS 2012発売
 Beta版から使ってみてますが、「使いやすさ」が強化された印象。
 あと、自動テスト系の機能を使い始めてます。
・ヒーロー島でTFS Day
 マイクロソフトの長沢さんに広島にお越し頂き、熱いセッションを行っていただきました。
 また、西日本初だと思いますが、TFSハンズオンを開催しました。
 
・ALM Advent Calendar参加
 今年も小ネタで参加させていただきました。
・CLR/Hカソウ化デイ参加
 ついに勉強会で北海道まで遠出してしまいました。
 食べ物美味しいですし、内容もむちゃくちゃ濃かったです。
 来年も行きたいですね。

○来年やりたいこと
 ・会社でのTFS利用率をもう少し上げる
  現状、単なるバージョン管理としてしか使用してないので。
 ・.NETのお勉強
  そろそろデベロッパーの力がなくなってきた気がするので、再度チャレンジ。
 ・自動テストのお勉強
  基本の「き」ぐらいは習得したいです。
 ・社内勉強会
  周りのスキルアップをしないと、自分だけ勉強しても仕事は楽にならないので。

TFSUG関連(開発プロセス系)でいろんな方とお会いでき、たくさん勉強できたような気がします。

今年もいろんな方にお世話になり、ありがとうございました。
また来年もよろしくお願いします。m(__)m

1つのチームプロジェクトで複数言語を使用した場合のゲートチェックイン TFS2012 Update1版

ALM Advent Calender」22日目への参加記事になります。

以前に
・「1つのTFSプロジェクトで、.NETとJavaの共存は可能か?
で、1つのチームプロジェクトでJavaと.NETプロジェクトのそれぞれに対してゲートチェックインを設定した場合の動作について記載しましたが、TFS2012 with Update1で改めて確認してみました。

今回、少しだけパワーアップして、
 ・Native C++プロジェクト
 ・C#プロジェクト
 ・Javaプロジェクト
の3つを1つのチームプロジェクトとして登録し、それぞれのプロジェクト用にゲートチェックイン用のビルド定義を作成しました。

010


011

最初はC#プロジェクトでチェックインを実行します。

012

なぜか、ビルド定義の選択肢に「CI-Build-CPlus」がありません。
「CI-Build-CSharp」を選択して実行すると、正常にビルドが実行されました。

次にNative C++プロジェクトでチェックインを実行します。

013

今度はビルド定義の選択肢に「CI-Build-CSharp」がありません。
「CI-Build-CPlus」を選択して実行すると、こちらも正常にビルドできました。

最後にJavaプロジェクトでチェックインを実行します。

014

???、対象のビルド定義が「CI-Build-Java」のみです。
このまま実行すると、正常にビルドできました。

ということで、結論は「複数言語を使用した場合のゲートチェックインでも問題ない」ですが、ビルド定義の選択条件についてはよくわかりません。
→修正した(シェルブ対象となった)ファイルが格納されているフォルダと、その上位(親とか)のフォルダをビルド対象とするビルド定義が選択肢に上がっているような気がしますが、確認できる情報が見つかってません。

CLR/H カソウ化デイに参加してきました

12/15、北海道の有名なコミュニティであるCLR/Hさんが年1回開催するカソウ化ディに参加してきました!

せっかくの機会なので、前日の金曜に休暇をとってゆっくりと移動。
(単に、直行便の時間に合わせたというだけですが)
お昼は空港の回転寿司。
Dsc_0059
(この画像で、一部の方にはどの店で食べたかがバレました)

その夜には一部の方々と一緒に前夜祭。
Dsc_0066
なぜか、ここでLT参加が決定。
この後、とある方に連行され深夜まで熱い前夜祭。

当日は当然午前中から参加。
他の皆様のセッションの凄さとは裏腹に、自分のLTはグタグタになってしました。m(__)m
LTは、以前にブログに上げた「TFService+デスクトップクラウドで自動ビルドまでできます」にしました。(資料はShlideShareにあげました。)

CLR/Hさん恒例のおやつタイムも豪勢でした!
Dsc_0074
これ、すごくおいしかったです!!

その後の懇親会で出てきた寿司も美味しかった。
Dsc_0089
(前日に食べたところと同じ店だったのは内緒ですw)

打ち上げ(反省会?)にも参加させて頂き、この日も午前様でした。
この2日間、とっても楽しく参加させて頂きました。
この場を借りて、スタッフの皆様、参加された皆様に感謝します。

なんか、「食べ物美味しかった」しか感想がないように見えますが、久しぶりにお会いできた方、初めてお会いできた方、内容の濃いセッションなどなど、本当に充実したイベントでした。

流石に度々行くことは(資金的に)できませんが、また来年も行きたいです!!

ビルド定義のワークスペースで警告が出るのは?

ALM Advent Calender」13日目への参加記事になります。

TFS2012とVS2012をUpdate1環境にしたところ、今までは怒られなかったビルドで警告が出てました。

005

「格納フォルダーをクロークする必要があります。」と出ています。
ちなみに、クロークは「除外」のことです。
除外しろと言われてもどこを...??

とりあえず、メッセージに記載されているリンク先を参照してみます。
英語にページに飛びますが、右上の言語を「日本-日本語」に変更すれば日本語ページに移動できます。
すると、こんなことが書いてありました。

006

「必要なフォルダーをすべて含める」のはいいとして、「必要なフォルダーのみを含める」と言われても、必要でないフォルダーって??

念のため、ビルド定義を見ると、

007

RTM版ではエラーになりませんでしたが、Update1では「入力が必要である」という警告になっていました。

無い頭をひねってみましたが考えても何も思いつかないので、新しいビルド定義から学ぶことにしてみました。

008

なんと、最初から「クローク」状態の定義が追加されています!!

ということで、結論は「RTM版でデフォルトのままビルド定義を作成したものをUpdate1に移行した場合、ワークスペースの定義にクローク対象を追加する必要がある」ということです。(「警告メッセージを無視する」という手もありますが、警告とはいえエラーをそのままにするのは精神衛生上よくないかと)

ちなみに、クローク対象として「/[プロジェクトフォルダ]/Drops」が追加されていますが、これはクラウドで稼働しているTeam Foundation Serviceを使ったチームプロジェクトでビルド定義を作成した場合、ビルド出力を格納するフォルダーになります。

009

個人的な想像ですが、Team Foundation Serviceのビルド定義で「Drops」フォルダを含めた場合、ビルドに必要のないファイル、しかもある程度大きなファイル(.exe/.dllなど)がビルドサーバに転送されることになり、ビルド実行速度/リソースに影響があるのでこの制約が追加されたのではと思います。

オンプレミス環境では「Drops」は使用しないと思いますので、何も考えずにクローク対象として「Drops」を追加しても問題ないと思います。

TFSからAnt実行時に設定される変数の確認方法

ALM Advent Calender」4日目への参加記事になります。

「Microsoft Visual Studio Team Foundation Server 2012 Build Extensions」を使ってAntのBuild.xmlを記述するときに、ビルドに関する情報を使いたい時があります。
(ビルド時のフォルダとか、ビルド時に採番された番号など)

Antの中でechoを使って出力してもいいのですが、ビルド実行時のパラメータを変更することで簡単にログへ出力することができます。

事前にAntを実行するビルド定義を作成し、作成したビルド定義をVisual Studio Shellから実行する時にパラメータを一部変更します。
「パラメータ」タブを選択し、「ログの詳細度」から"Detailed"か"Diagnostic"を指定してから実行します。(ここで指定した内容は1回だけ適用されます)

001

ビルドが終了すると、ログにAnt実行時のコマンドラインが出力されます。

002

コマンドライン引数の中で、「-D」で指定されているものがTFSからAntに渡される情報になります。(-D[パラメータ名]=[値]という形式です)

使用例としては、「BuildNumber」をJarファイルのメタ情報として埋め込んでおけば、後でどのビルドで生成したものかが簡単に判別できます。

003

注意点ですが、残念ながらEclipse+Team Exploere Everywhere(TEE)からではこの手順が使えませんので、Visual Studio Shellから実行してください。
(Eclipseから実行した場合、「パラメータ」タブがありません。TEEを使用するためにVisual Studio Shellは必須ではありませんが、1環境に1台ぐらいはインストールしておいたほうが便利だと思います。)

TFSでJavaのビルド環境構築 in 2012 その9:各種チェックのエラー有無判定とJarファイル作成

今まで行ってきた各種チェックのエラー有無判定とJarファイル作成部分についてです。

何も考えずにJUnit/CheckStyle/FindBugsを使うと
 ・JUnit/CheckStyleでエラー検知したら、それ以降の処理が実行されなかった
  →「FindBugsのレポートが作られない」とか。
 ・FindBugsでエラー検知したのに、ビルドエラーにできない
といったことになります。
これだと、エラーを見逃してしまうことになるので、
 ・エラーチェックは全て実行する
 ・何かしらエラーを検知した場合にはビルドをエラーにする
ようにしないといけません。

そのために、今までの各種チェックタスクで
 ・エラーを検知しても処理を継続する
 ・エラーを検知した場合のみ、プロパティをセットする
というオプションを指定していました。
処理の継続はチェック処理のタスク内で完結していますが、「何かしらエラーを検知した場合にはビルドをエラーにする」ために、プロパティがセットされていればAntをエラー終了させる処理を追加します。

027

最初の「echoproperites」タスクは、ビルドログファイルにエラーを検知したかどうかを簡単に出力するために入れています。「*.failed」が存在した場合、こんな感じで出力されます。

028

最初の2行はヘッダ部、残り3行がプロパティ名とセット内容になります。
全て正常であれば、ヘッダ部しか出力されません。

次の「condition」タスクで、Antをエラー終了させるかどうか判定しています。
この場合、junit.failed/findbugs.error.failed/findbugs.warnings.failed/findbugs.warnings.failedのどれかがセットされていれば、metrics.failedをセットすることにしています。
最後に、「fail」タスクでmetrics.failedがセットされていればAntをエラー終了させています。
今回は、この後にJarファイル作成(make-jar)を動かすようにしていますので、エラーがあったときにはJarファイルを作成しません。

残りはJarファイル作成部分です。

029

特別なことはしていません。
・出力先をBinaries配下に指定し、TFSのビルド画面にある「格納フォルダを開く」から参照できるようにする
・マニフェストファイルに、ビルド番号をセットする
 こんな感じでセットされます。

030

長々と書きましたが、TFS+Javaでのビルド自動化の基礎はこんな感じかなと思ってます。

気が付いた方がいらっしゃるかもしれませんが、今回の内容ではBuild Extensionsを追加するだけでTFS側に対する特別な設定/定義ファイルの変更ありません。
フォルダ構成に気を付ければ、Antを作成するだけでTFSでもこれだけできるということです。
なお、TFSのビルド定義からAntのターゲットを指定したいという方は「TFSでのJavaビルド環境作成:AntのTarget指定方法」を参考にしてみてください。

最後ですが、「VS2012 Premium/Ultimate+TFS 2012」だとちょっとした設定だけでこれだけのことができるので、どれだけ強力な環境かということも思い知りました。
(ようは.NETで開発したい orz)

TFSでJavaのビルド環境構築 in 2012 その8:FindBugs

FindBugs部分についてです。

026

ポイントですが、
 ・レポートの出力先をBinaries配下にする(outputFile="${findbugs.result.dir}/FindBugsResult.html")
 ・エラーを検知したときのみに、プロパティをセットする
  errorProperty="findbugs.error.failed"
  warningsProperty="findbugs.warnings.failed"

あと、その2でも書きましたが、サーバのOS環境変数に「LANG=ja_JP.UTF-8」が設定されていないと、レポートの日本語部分が文字化けします。

次が最後ですが、今まで行ってきた各種チェックのエラー有無判定とJarファイル作成部分についてです。

TFSでJavaのビルド環境構築 in 2012 その7:カバレッジ取得準備~テスト・カバレッジレポート作成

カバレッジ取得準備~テスト・カバレッジレポート作成部分についてです。

最初は、カバレッジ取得準備部分です。

022

Cobertura独自の取得処理を追加したクラスファイルの出力先を個別に指定する(todir=${cobertura.instrument.dir})だけです。後は普通に記述してください。^ ^;

次はJUnitの実行部分です。

023

基本的には普通に記述すれば大丈夫ですが、
○テスト結果ファイルについて
 ・出力ファイルの形式をxmlにする
 ・出力先をBinaries配下にする
  こうすると、TFSのビルド結果に反映できるようになります。
  ※デフォルトで問題ないのですが、出力ファイル名が「TEST-*.xml」に従わないと、TFSのビルド結果に反映されません。
○処理継続について
 CheckStyleと同様に
 ・テストエラーを検知しても処理を継続させる(haltonfailure="off")
 ・テストエラーを検知したときのみ、プロパティをセットする(failureproperty="junit.failed")
を指定します。

さらに、テスト結果レポートの作成についてです。

024

レポートの出力先をBinaries配下にしておき、後でTFSの格納フォルダから参照できるようにしておきます。

次はカバレッジ取得レポートの作成です。

025

出力先をBinaries配下にすることぐらいで、基本通りで問題ありません。

次は、FindBugs部分についてです。

TFSでJavaのビルド環境構築 in 2012 その6:CheckStyle

CheckStyle部分についてです。

021

「src」配下にあるファイルを対象にして、チェックを実行します。
(テスト用ソースが格納される「testsrc」は対象になりませんので、テスト用ソースがいくら汚くても問題ありませんw)

ポイントですが、
 ・failOnViolation="false"
  エラーを検知しても処理を継続する(Antを終了しない)
 ・failureProperty="checkstyle.failed"
  エラーを検知したときだけ、指定したプロパティをセットする
 ・レポートの出力先(style out)を「Binaries」配下にする
  パス定義として「${checkstyle.result.dir}」を「${BinariesRoot}/CheckStyleResult」としています
の3つです。
「checkstyle.failed」は、後ほどエラー検知有無で使用します。

次はカバレッジ取得準備~テスト・カバレッジレポート作成部分についてです。