Reporting Service 付き Team Foundation Server を構築する手順

# サマリ
Reporting Service 付き Team Foundation Server 2017 を構築する際の要所と、ハマり個所を記録した。

# 背景
Team Service 使いたいけど使えないので仕方なく Team Foundation Server (TFS) を使う。で、せっかく TFS を使うのなら、Reporting Service も一緒にいれて進捗レポートとかを自動生成できるようにしよう。というわけで Reporting Service 付き Team Foundation Server を構築することにした。

# 構築
 
## こんな TFS を構築する
* リポジトリ内のコードを検索できて
* プロジェクトの進捗レポートが見れる
* Team Foundation Server を
* 1台のサーバで構築する

## 使うソフトウェア
* Windows Server 2016 Standard Edition [リンク](https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-server-2016) ※要Microsoftアカウント
* SQL Server Developer Edition [リンク](https://my.visualstudio.com/benefits) ※要Microsoftアカウント
  * 本番環境で使う場合は Standard Edition 以上が必要
  * Reporting Service を使わないなら Express Editionでも可
* Team Foundation Server 2017 [リンク](https://www.visualstudio.com/ja/downloads/)
* Visual Studio 2017 RC [リンク](https://www.visualstudio.com/ja/downloads/)
* Java Runtime Environmen [リンク](https://java.com/ja/download/)
  * コード検索を使わないなら不要
  * TFSのインストーラが入れてくれるので、インターネットにつながってるサーバなら事前導入は不要

今回は評価目的として構築する。運用環境として構築するときは適切なライセンスを使ってね。


## 構築までの流れ

1. ハードウェアの準備
2. Windows Server のインストールと前準備
3. SQL Server のインストール
4. Reporting Service の構成
5. Team Foundation Server のインストールと構成
6. レポートが表示されること確認する

## 1. ハードウェアの準備
今回は評価目的なのでVMで構築する。こんな構成で。
* CPU: 2 core
* Memory: 8GB
* Disk: 80GB

実際に構築する際には次のページあたりを参考に。
[Requirements and compatibility - Hardware recommendations](https://www.visualstudio.com/en-us/docs/setup-admin/requirements#hardware-recommendations)

## 2. Windows Server のインストールと前準備

Team Foundation Server のインストールにはデスクトップ環境が必要な点だけ注意。他は普通に。

![install-windows.png](https://qiita-image-store.s3.amazonaws.com/0/118451/1160e8f1-a966-f7ba-4310-7385d3b33fcb.png)


これ以降の手順は基本的にAdministrators権限を持ったユーザで実施する。


### 2.1 リモートデスクトップを有効に
しておくと便利。

### 2.2 サービス用ユーザの作成

Team Foundation Server と Reporting Service との間でやりとりする専用のユーザ tfsreports を作っておく。
![tfsreports-user.png](https://qiita-image-store.s3.amazonaws.com/0/118451/62ce03b3-11ea-52ed-316b-cae9fafbe1ae.png)



### 2.3 JREのインストール

ソースコード検索にはJavaが必要らしいのでJREをインストールする。

インストールできたら環境変数 JAVA_HOME を設定する。
Windowsアイコン右クリック⇒システム⇒システムの詳細設定⇒環境変数⇒システム環境変数⇒新規

![java.png](https://qiita-image-store.s3.amazonaws.com/0/118451/a994ca06-4eb6-3434-9a1d-c61d6efdf8e1.png)
![java2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/c8bbd8f3-0180-d817-a9aa-c92856c5256f.png)


こんな感じになってればOK




## 3. SQL Server のインストール

要所だけメモ

### 3.1 プロダクトキー
Developerエディションなので不要

### 3.2 ライセンス条項
読む

### 3.3 Microsoft Update
やっておいたほうがよさそう（スキップ可）

### 3.4 インストール ルール
怒られたらなんとかする

### 3.5 機能の選択

SQL Serverデータベースエンジンだけでなく、コード検索に必要なフルテキスト検索とレポートを作成するための機能もインストールする。
* データベースエンジンサービス
* 検索のためのフルテキスト抽出とセマンティック抽出
* Analysis Services
* Reporting Services

![sqlserver.png](https://qiita-image-store.s3.amazonaws.com/0/118451/c5f0d312-7203-7cb7-042c-3ea223e28229.png)


### 3.6 インスタンスの構成
分かりやすい名前にするとよい。TFSDBとか。

### 3.7 サーバの構成
TFSインストール後、たまにSQLジョブが停止しててアレ？ってなることがあるので、SQLServerエージェントを自動起動にしておくとよいかも。

![sqlserver2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/16fd7fee-ffc2-a8b0-3832-e62eeb42794d.png)

### 3.8 データベースエンジンの構成
特に理由がなければWindows認証モードで、管理者は適当に。

### 3.9 Analysis Services の構成
「多次元およびデータマイニングモード」で、管理者は適当に。

### 3.10 Reporting Services の構成
あとで設定するので「インストールのみ。」



## 4. Reporting Service の構成
SQLServerのインストールが終わったら、Windowsのスタートメニューから「Reporting Services 構成マネージャー」を起動し、下記4つを構成する。他はどうでもよい。
1. WebサービスURL
2. データベース
3. WebポータルURL
4. 実行アカウント

### 4.1 WebサービスURL
設定値はそのままでよい。適用ボタンを押す。

### 4.2 データベース
現在のレポートサーバーデータベースが未設定なので、「データベースの変更」から設定する。

#### アクション
新しいレポートサーバーデータベースを作成する

#### データベースサーバー
そのままだと多分ダメ。サーバー名を3.6で作成したデータベースサーバに設定する。

![reportdb.png](https://qiita-image-store.s3.amazonaws.com/0/118451/e7318a1d-f205-6c8f-a8ff-8b85f554aa9c.png)

#### データベース
そのままでよい。

#### 資格情報
そのままでよい。


### 4.3 WebポータルURL
設定値はそのままでよい。適用ボタンを押す。

### 4.4 実行アカウント
実行アカウントの指定にチェックを入れ、1.で作成したtfsreportsユーザを設定し、適用ボタンを押す。

![reportuser.png](https://qiita-image-store.s3.amazonaws.com/0/118451/aebca484-fb90-6a74-a3e0-a84816d29a12.png)


これで終了。

## 5. Team Foundation Server のインストールと構成

### 5.1 インストール
インストーラが勝手にやってくれる。
Team Foundation Server 構成センター がでてきたらウィザードを開始する。

### 5.2 新しい配置
「これは新しい Team Foundation Server 配置です」

### 5.3 ライセンス
今回は評価なので試用版を開始する

### 5.4 詳細設定
Reporting Serviceを使いたいので「新しい配置 - 上級」を選ぶ。

### 5.5 データベース
そのままでよい。（上で作成したデータベースを設定するところ）

### 5.6 アカウント
そのままでよい。

### 5.7 アプリケーション創
そのままでよい。

### 5.8 検索
コード検索機能を使いたいので、「検索のインストールと構成」にチェックをいれて「Searchサービスのインストール」

### 5.9 レポート
「Team Foundation Server で使用するレポートを構成する」にチェックを入れる

#### Reporting Services
そのままでよい。（3.9で作成した Reporting Services を設定するところ）

#### Analysis Services
そのままでよい。（3.10で作成した Analysis Services を設定するところ）

#### レポートリーダーアカウント
2.2で作成したtfsreportsユーザを設定

![tfsreportuser.png](https://qiita-image-store.s3.amazonaws.com/0/118451/1ae2c275-d795-692e-53a1-eb6ba45314fa.png)


### 5.10 SharePoint
いらない

### 5.11 プロジェクトコレクション
とりあえず作成しておく

### 5.12 整合性チェック
上までのステップをやっておけば多分合格するはず。
あとはウィザードが勝手にやってくれる。


### 5.13 インストールの確認

こんな感じになってれば問題なし。

![tfsinstalled.png](https://qiita-image-store.s3.amazonaws.com/0/118451/b7148574-73a5-2263-752c-e4c7d42c6e1c.png)
![tfsinstalled2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/7f58ab16-2c75-8415-25e5-d7fdecfef86a.png)


Webブラウザで下記のURLにアクセスすると、Team Foundation Server のページが表示されるはず。
http://<TFSをインストールしたホストの名前かIPアドレス>:8080/tfs/
※ログインIDはWindowsのユーザID・パスワード。


### 5.14 Reporting Service の権限設定

tfsreportsユーザがレポートを作成したりできるように Team Foundation Content Manager 権限を付与する。

Team Foundation Server 管理コンソール の アプリケーション層⇒レポート の画面(5.13のスクリーンショットを参考に)に載ってるURLにアクセスし、下記のスクリーンショットのように設定する。

![reportmanager.png](https://qiita-image-store.s3.amazonaws.com/0/118451/57f39c60-db2f-f3ba-c80f-0071820a0bb4.png)
![reportmanager2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/32e8fe3d-f023-04d6-b1fc-ae1dc24318d0.png)
![reportmanager3.png](https://qiita-image-store.s3.amazonaws.com/0/118451/a243c175-dca6-1fc8-a22d-7bd1cc89018e.png)
![reportmanager4.png](https://qiita-image-store.s3.amazonaws.com/0/118451/346ce7d9-c1d7-0781-cd49-fb157f91ef76.png)


### 5.15 レポートフォルダを設定し直す (ハマりどころ)

Team Foundation Server 管理コンソールのチームプロジェクトコレクションレポートフォルダーを、
一度「構成をクリア」して「既定のフォルダーの場所を編集」し直す。
※これをやらないとなぜかレポートが作成されなくて困った

![delandset.png](https://qiita-image-store.s3.amazonaws.com/0/118451/959de5e7-d017-e93d-2257-ad299411c6fa.png)





## 6. レポートが生成されることを確認する

チームプロジェクトを作成して、プロジェクトの進捗レポートなどが生成されるかを確認する。

### 6.1 Visual Studio からチームプロジェクトを作成する

チームプロジェクトを作成する。※害造Visual StudioはRC版なので、RTM版ではUIが変わってるかも？

![vstp1.png](https://qiita-image-store.s3.amazonaws.com/0/118451/4995b5e9-406e-98ce-4f20-4815b8fbd32c.png)
![vstp2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/78def231-585d-98bc-b2ff-c40f966e9088.png)
![vstp3.png](https://qiita-image-store.s3.amazonaws.com/0/118451/55af668a-6959-ef97-a722-67353e648132.png)
![vstp4.png](https://qiita-image-store.s3.amazonaws.com/0/118451/4f7977df-52da-8abe-a573-de9872520702.png)
![vstp5.png](https://qiita-image-store.s3.amazonaws.com/0/118451/ceaaf683-8e26-449c-326b-8b7a513f4b1b.png)
![vstp6.png](https://qiita-image-store.s3.amazonaws.com/0/118451/9f1551fb-42da-de65-1233-9053319ba876.png)
なんとなくScrumで。

### 6.2 プロダクトバックログとタスクを追加してみる

こんな感じで適当に
![taskboard.png](https://qiita-image-store.s3.amazonaws.com/0/118451/8efb9fec-ef49-cb49-d21c-cc99611cd591.png)



### 6.3 レポートを見る (ハマりどころ)

5.14のURLからチームプロジェクトのフォルダをたどるといくつかのレポートが準備されている。
画像はバックログの概要レポート。
![backlogreport.png](https://qiita-image-store.s3.amazonaws.com/0/118451/023f0e91-ad36-b95c-247f-089898232218.png)



もししばらく待ってもタスクボードの状態がレポートに反映されないなら、キャッシュを無効化してみる。

![discache.png](https://qiita-image-store.s3.amazonaws.com/0/118451/b999a3a8-a0d0-3386-91af-d5dc3c7b551f.png)
![discache2.png](https://qiita-image-store.s3.amazonaws.com/0/118451/3d09ba5f-c5e3-fda2-d567-19bcb0fec5bf.png)

### ちなみに (ハマりどころ)
Visual Studio からでなく、TFSのWebポータルからチームプロジェクトを作るとレポートフォルダが空になってて困った。

実はVisual Studioでチームプロジェクトを作る前にWebポータルから作ってたんだけどこんな感じ。何もない。
![webtpempty.png](https://qiita-image-store.s3.amazonaws.com/0/118451/1163166a-16a0-379c-908d-78d5538c1f23.png)



## ハマりどころまとめ

* TFSレポートフォルダを設定し直さないと、チームプロジェクトを作ってもレポートがアップロードされない
* TFS Web ポータルからチームプロジェクトを作るとレポートがアップロードされない
* キャッシュ機能があるのでレポートがすぐに更新されないことがある

# 最後に
こんな感じで作れます。
本当は Team Service を使いたいけど社内ルールでムズカシイ！そんな方は Team Foundation Server どうでしょうか。Reporting Service も使えるし。