TFS2013インストール(できるだけコマンドで) その4:SharePoint Foundation 2013必須コンポーネント

今回はSharePoint Foundation 2013の必須コンポーネントをインストールします。
タイトルどおりコマンドでのインストールですが、
 ・オフラインでのインストール
 ・一部のコンポーネントは最新版に変更
に挑戦してみました。

ここで「なんでSharePointの必須コンポーネントのインストールが先なの? SQL Serverのインストールが先じゃないの?」と疑問に思った方、正解です。
普通はSharePointの前提となるSQL Serverを先にインストールします。
ところが、SQL Server 2014を先にインストールすると、OSの環境変数「PSModulePath」にスペース入りのフォルダがセットされてしまい、SharePoint 2013の必須コンポーネントインストール時に「PSModulePath」へフォルダを追加する際に失敗してしまいます。(インストーラーが「setx」コマンド実行時に、既存のフォルダに対してダブルクォーテーションを付けていないことが原因です)

これを回避するため、必須コンポーネントだけ先にインストールしてしまいます。

Windows Server 2012 R2にSharePoint Foundation 2013をインストールするためには、with SP1を入手する必要があります。入手先はこちら

オフラインでSharePoint Server 2013をインストールする方法については、Japan SharePoint Support Team Blogに掲載されていました。
→「インターネットに接続されていない環境に SharePoint Server 2013 をインストールする方法
基本的には掲載されている手順に従いますが、一部のコンポーネントを最新化するために内容を変更します。
まずは、オフラインインストール用にコンポーネントをダウンロードしておきますが、以下のコンポーネントについては最新版を使いたいので取得内容を変更します。
○Windows Management Framework
 バージョンを3.0から4.0に変更します。Windows Management Framework 4.0はここから入手できます。

○Windows Identity Foundation
 Windows Server 2012 R2では、機能の追加でインストールすることになります。

○SQL Server Native Client
 2014のNative Clientインストーラは公開されていませんので、SQL Server 2014インストールメディア内の「\1041_JPN_LP\x64\Setup\x64」にある「sqlncli.msi」を使います。

○AppFabric
 最新版は「Microsoft AppFabric 1.1 for Windows Server」になります。ここから入手できます。

○WCF Data Service 5.6
 WCF Data Services 5.0は上記Blogに記載されていますが、追加で5.6が必要になります。ここから入手できます。

○Cumulative Update Package 1 for Microsoft AppFabric 1.1 for Windows Server
 日本語版が公開されています。ここから「AppFabric1.1-RTM-KB2671763-x64-JPN.exe」を入手します。

入手したコンポーネントのインストールイメージは「C:\Temp\Images」に保存します。

ようやくインストールですが、いきなり手順追加です。
○.NET Framework 3.5の有効化
 
 オフラインではWindows Updateに接続できないと有効化に失敗しますので、OSのインストールメディアを入れた状態で以下のコマンドで有効化します。
 Add-WindowsFeature Net-Framework-Features -Source D:\sources\sxs
 ※DドライブにOSのインストールメディアが入っている場合です。

○Windows Identity Foundationの有効化
 Add-WindowsFeature Windows-Identity-Foundation

○SharePoint Foundation 2013 SP1 インストールイメージの展開
 Sharepoint.exe /extract:C:\Temp\Extract

○SharePoint 2013必須コンポーネントオフラインインストール用定義ファイルの作成
 SharePoint 2013の必須コンポーネントをオフラインでインストールさせるための定義ファイルを作成します。以下の内容を「1行」で記載したファイルを「C:\Temp\Extract\PrerequisiteInstaller.Arguments.txt」として保存します。
/NETFX:"C:\Temp\Images\dotNetFx45_Full_setup.exe" /PowerShell:"C:\Temp\Images\Windows8-RT-KB2799888-x64.msu" /Sync:"C:\Temp\Images\synchronization.msi"
/sqlncli:"C:\Temp\Images\sqlncli.msi" /AppFabric:"C:\Temp\Images\WindowsServerAppFabricSetup_x64.exe" /IDFX11:"C:\Temp\Images\MicrosoftIdentityExtensions-64.msi"
/WCFDataServices:"C:\Temp\Images\WcfDataServices.exe" /KB2671763:"C:\Temp\Images\AppFabric1.1-RTM-KB2671763-x64-JPN.exe" /MSIPCClient:"C:\Temp\Images\setup_msipc_x64.msi" /WCFDataServices56:"C:\Temp\Images\WcfDataServices56.exe"

○SharePoint 2013必須コンポーネントのオフラインインストール
 C:\Temp\Extract\prerequisteinstaller.exe
 残念ながら、ここで使用許諾確認があるので、少しだけGUIを操作する必要があります。
 ※オフラインインストールの詳細については、TechNetの「ネットワーク共有から SharePoint 2013 の必須コンポーネントをインストールする」にあります。
  また、一部注意点がありますが、その内容はJapan SharePoint Support Team Blogに詳しく記載されています。

○Microsoft Identity Extensionsのインストール
 なぜか自分の環境ではMicrosoft Identity Extensionsをダウンロードしようとしてしまうため、インストールが途中で中断してしまいました。仕方がないので、個別にインストールします。
 msiexec /i C:\Temp\Images\MicrosoftIdentityExtensions-64.msi /quiet /norestart

○もう一度SharePoint 2013必須コンポーネントのオフラインインストール
 再度「C:\Temp\Extract\prerequisteinstaller.exe」を実行すると、残りのコンポーネントのインストールを継続してくれます。

これで必須コンポーネントのインストールが完了です。
やっぱりSharePointってややこしいです。

次はSQL Server 2014のインストールです。

TFS2013インストール(できるだけコマンドで) その3:TFSサーバOS環境作成

TFSサーバのOS環境設定です。

○PowerShell設定
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

○コンピュータ名の変更
Rename-Computer tfs2013sv01 -Restart

○ネットワークアダプタの名称変更
Get-NetAdapter | Rename-NetAdapter -NewName Public

○IPv6のアドレスを削除する
Get-NetAdapter | Remove-NetIPAddress -AddressFamily Ipv6

○IPv4のアドレスを設定する
Get-NetAdapter | New-NetIPAddress -IPAddress "192.168.0.202" -AddressFamily IPv4 -PrefixLength 24

○DNS設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddress "192.168.0.201"

○AD参加
$cred = Get-Credential
Add-Computer -DomainName "tfs2013.localnet" -Credential $cred
→ADにコンピュータを参加させるためにAD管理者ユーザを入力します。

○(念のため)再起動
Restart-Computer

次は、SharePoint Foundation 2013の必須コンポーネントのインストールについてです。

TFS2013インストール(できるだけコマンドで) その2:ADサーバ作成

まずはADサーバの構築になります。
いきなり例外ですが、Windows自体のインストールはGUIベースで行います。
本当は「Windows アセスメント&デプロイメントキット」(Windows 7までは「Windows AIK」)でできればいいのですが、ちょっと大変そうだったのでまた今度にします。

Windowsのインストールが終了したら、まずはPowerShellのポリシー変更からです。
○実行ポリシー変更
 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
 ※管理者権限で実行
 ほかのユーザで都度ポリシー設定するのは面倒なので、「-Scope LocalMachine」をつけてます。

あとは、一般的な設定を行っていきます。
○コンピュータ名の変更
Rename-Computer tfs2013ad01 -Restart
→ここでリブートします

○ネットワークアダプタの名称変更
Get-NetAdapter | Rename-NetAdapter -NewName Public

○IPv6のアドレスを削除する
Get-NetAdapter | Remove-NetIPAddress -AddressFamily Ipv6

○IPv4のアドレスを設定する
Get-NetAdapter | New-NetIPAddress -IPAddress "192.168.0.201" -AddressFamily IPv4 -PrefixLength 24

○参照DNSサーバ設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddress "192.168.0.201"

これからADに関するインストール/設定になります。
○ADDSのインストール
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

○フォレスト作成
Install-ADDSForest -DomainName "tfs2013.localnet" -DomainMode Win2012R2 -ForestMode Win2012R2 -InstallDns
 →Administratorパスワードを聞かれるので入力する。
  ここで自動リブートします。

○パスワード制限変更(履歴なし/パスワードの長さ=0/複雑度チェックなし)
Set-ADDefaultDomainPasswordPolicy -Identity tfs2013.localnet -PasswordHistoryCount 0 -MinPasswordLength 0 -ComplexityEnable $false

○OU作成
New-ADOrganizationalUnit -Name TeamFoundationServer

○ADへのグループ追加
New-ADGroup -Name TFSServices -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet" -GroupScope Global

New-ADGroup -Name TFSDevelopers -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet" -GroupScope Global

○ADへのユーザ追加(パスワード無期限/パスワード変更要求なし)
New-ADUser -Name TFSService -AccountPassword (ConvertTo-SecureString -AsPlainText "TFSService" -Force) -PasswordNeverExpires $true -PasswordNotRequired $true -Enabled $true -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet"

New-ADUser -Name TFSAdmin -AccountPassword (ConvertTo-SecureString -AsPlainText "TFSAdmin" -Force) -PasswordNeverExpires $true -PasswordNotRequired $true -Enabled $true -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet"

New-ADUser -Name TFSDev01 -AccountPassword (ConvertTo-SecureString -AsPlainText "TFSDev01" -Force) -PasswordNeverExpires $true -PasswordNotRequired $true -Enabled $true -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet"

New-ADUser -Name TFSDev02 -AccountPassword (ConvertTo-SecureString -AsPlainText "TFSDev02" -Force) -PasswordNeverExpires $true -PasswordNotRequired $true -Enabled $true -Path "OU=TeamFoundationServer,dc=tfs2013,dc=localnet"

○ADグループへのユーザ登録
Add-ADGroupMember TFSServices TFSService
Add-ADGroupMember TFSDevelopers TFSAdmin
Add-ADGroupMember TFSDevelopers TFSDev01
Add-ADGroupMember TFSDevelopers TFSDev02

ここまで実行すれば、AD構築とユーザ作成が完了です。
次はTFSサーバのOS環境作成です。

TFS2013インストール(できるだけコマンドで) その1:概要

毎度ながらご無沙汰状態で申し訳ありません(/_;)

ちょっと調べものをするために環境を作ろうと思っていたところに、Visual Studio 2013 Update 3やTeam Foundation Server Updte 3が降ってきたので、一から環境を再作成することにしました。
でも、今までと同じように作成しても面白くないので、今回はできるだけコマンドを使ってインストールしてみることにします。

今回作成する環境は次の通りです。
○Active Directoryサーバ
 OS:Windows Server 2012 R2 with Update
 ドメイン名:tfs2013.localnet
 コンピュータ名:tfs2013ad01

○Team Foundation Server 2013 サーバ
 OS:Windows Server 2012 R2 with Update
 コンピュータ名:tfs2013sv01
 SQL Server:SQL Server 2014
 SharePoint:SharePoint Foundation 2013 with SP1

○ユーザなど
 ・グループ
  TFSServices, TFSDevelopers
 ・ユーザ
  TFSService(TFSServices)
  TFSAdmin, TFSDev01, TFSDev02(TFSDevelopers)

今回のポイントは
・SQL Server 2014を使う。
 →Team Foundation Server 2013用に無償で使えるSQL Serverとして2014が対象になるので。(詳細はBrian Harry’s Blogにあります)
・Windows Server 2012 R2でSharePointを使う
 →TFS 2013にはSharePoint Foundation 2013が同梱されていますが、Windows Server 2012 R2には対応していないのでインストールできません。しかし、Windows Server 2012 R2対応のSharePoint 2013 SP1が出ているので、これを使ってみます。

前置きはこのぐらいにしておいて、次からは実際のインストールの手順についてです。

はじめてのTeam Foundation Server電子書籍発売開始!

2月に発売を開始し、あっという間に売り切れとなり、全く入手できなくなった、ある意味幻の「はじめてのTeam Foundation Server」ですが、この度電子書籍で発売開始となりました。

現時点では、以下のサイトで発売開始しているようです。
・紀伊国屋書店
・booklive
・セブンネットショッピング
・全巻漫画ドットコム

今後、Amazon(kindle)などからも発売されるようですので、書籍で見れなかった方はこの機会にいかがでしょうか?

2014/06/11追記
ついにAmazon(kindle)版も発売されました!!

VS2013版 Version Control Guide出てます(Beta)

以前に分岐について書いていますが、それの元ネタにさせていただいたVersion Contol Guideの最新版(2014/05/02)がCodePlexで公開されています。
Version Control Guide (ex-Branching & Merging)
まだ完成していないので「v3.BETA」ということですが、VS2013対応版となっています。

範囲もちょっと広がっていて、今公開されているのは
・TFS Version Control Part 1 – Branching Strategies
 分岐の進め方についてです。
・TFS Version Control Part 2 – TFVC Gems
 VS固有な「ワークスペース」と、マージについてです。
・TFS Version Control Part 3 – Dependency Management with NuGet
 NuGetでどうやって依存関係を管理するかについてです。
の3つあります。
NuGetは今回初めて作成されたものです。
それともう1つ、「Git for TFVC Users guide」も作成される予定のようですが、まだ公開されていないようです。
3つ別々にダウンロードもできますし、3つまとめて+一部の図の元ネタまで含まれているファイルをダウンロードすることもできます。
VS2013からGit対応したので、こんな図も含まれていました。
○TFVSとGitのどちらを使うかを迷ったときの決定チャート図
○TFVSとGitのアーキテクチャ概要図

全て英語ですが、図を見てるだけでも大体雰囲気はわかる資料になっています。今まで見たことない方は一度見てみてはいかがでしょうか?

「はじめてのTeam Foundation Server」出版

またもや約1ヶ月ほど間が空いてしまいました。

その変わりと言っては何ですが、自分も参加させて頂いているTFSUGの皆様により、「はじめてのTeam Foundation Server」が2014/01/30から出版となりました。(秀和システム様より出版)
書店販売はとりあえず以下の書店であれば大丈夫とのことです。
<札幌>
 紀伊國屋書店札幌本店
<東京>
 ジュンク堂書店池袋本店
<名古屋>
 三省堂書店名古屋高島屋店
<大阪>
 紀伊國屋書店梅田本店

「近くにそんな本屋ないぞ!」というかたは、Amazonから購入頂ければと思います。

自分も少しだけですが、Team Foundation ServerのインストールとVSSからの移行について書かさせて頂きました。
(他の筆者がMVP保持者なのに、自分だけ何も肩書きがないのは内緒ですw)

内容としては、はじめてTFSを使う方をターゲットとしていますので、全般的な機能説明とかがメインですが、
 ・プロダクトバックログの作成から始まる開発プロセスの流れ
 ・テストセンター/ラボセンター
 ・TFSの利用事例
といった、あまり語られることのない内容も記載されていますので、ぜひ手に取っていただければと思います。

あくまで私見ですが、アジャイルな感じで開発されている方は、本書に加えて、
・SCRUM BOOT CAMP THE BOOK(翔泳社)
・アジャイルソフトウェアエンジニアリング
 基本概念から継続的フィードバックまで(日経BP社)
を読めば、TFSを使ってアジャイルな開発を進めるにあたってのイメージは掴めるかなと思います。

また、お願いになりますが、フィードバックを頂ければとてもうれしいです。
(良かったこと、わからないこと、記載されていない機能について説明がほしい、近くの書店にも置いてほしいなどなど)
マイクロソフトの方針で、Visual Studio/Team Foundation Serverはラピッドリリース(短期間リリース)になりましたので、おそらく次のTFSが登場するのはそれほど遠くない時期と思われます。その時にまた書籍が出せるのであれば、頂いたフィードバックの内容を反映したいですし、リクエストが多ければ「~機能編」といった形で追加本が出せるかもしれません。(「あくまで~かも」ですが...)

最後ですが、出版記念として、2014/02/26(水)にTFSUGでイベントを開催します。
第21回 #TFSUG TFS本発売記念イベント
筆者による裏話などもありますので、お時間が取れる方は是非参加してみてください。

Team Explorer Everywhere 2013出てましたw

いつものことですが、いつの間にかTeam Explorer Everywhereが新しくなっていました。
○Brian Harryのブログ
 Team Explorer Everywhere 2013 is Available
 http://blogs.msdn.com/b/bharry/archive/2013/11/03/team-explorer-everywhere-2013-is-available.aspx

こちらからダウンロード可能になっています。(Languageを’Japanese’に変更すれば日本語版がダウンロードできます)
http://www.microsoft.com/en-us/download/details.aspx?id=40785
今回からだと思いますが、Java用のTFS SDKも一緒にダウンロードできるようになっています。

インストール方法はいつもと同じですw

○チームエクスプローラーのホームビュー
さて、今回目立つのは、チームエクスプローラーのホームビューの見た目が変わってます!
前回のチームエクスプローラー

001

今回のチームエクスプローラー

002

項目の右側にある「▼」をクリックするとこんな感じ

003

項目名そのものをクリックすると、今まで通りの内容が表示されます。
(「保留中の変更」をクリックしたとき)

004

ここにも怪しいリンクがありました。
右上にある矢印部分

009

をクリックすると...

005

ビューが分離しています!!
(初めは気が付きませんでした^ ^;)
よく使うビューを分離しておけば、ホームビューを経由せず、直接切り替えができるようになっています。

また、「保留中の変更」からシェルブセットの検索に飛べるようにもなっていますので、操作性が相当上がったような気がします。

○ソース
ソース管理エクスプローラーから、ファイル名での検索ができるようになりました。
元々はPowerToolsで提供されていたようですが、TEEに組み込まれました。

006


007

検索後の画面では、右クリックからのコンテキストメニューからファイルのプロパティを見たり、更新履歴を見たりできるようになっています。

008

「ファイル名はわかるけど、ソース管理上どこのプロジェクト/フォルダに格納されているかわからない」ようなときには重宝するかと思います。

○「項目をフォルダに追加(A)…」
画面が単純なダイアログからウィザード形式の3画面構成に変わっています。
また、シンボリックリンク対応/ワークスペースの自動マッピング/既にソース管理に登録されているファイルを自動的に除外するなど、細かい変更が加えられています。

○シンボリックリンク対応
Linux系の環境で、シンボリックリンク対応になったようです。

○EGit対応
EGitを拡張する形で、TEEでのGit対応が組み込まれたようです。
(自分がGit使えないのでよくわかりません。)

○Gitリポジトリからの(Eclipse)プロジェクトのインポート
Gitリポジトリから、プロジェクトのインポートができるようになりました。

大きくは操作性向上とGit対応になるかと思われます。
(その割には、バージョン番号が11.0.0.~から12.0.0.~と、メジャーバージョンが上がっていますがw)

TFSの分岐について:分岐に対するビルド定義

1つ書き忘れてました(^-^;

分岐を使用した場合、TFSのビルド定義はそれぞれの分岐に対して別々に作成することになります。
(DEVELOPMENTブランチに対する修正なのに、MAINブランチに対するビルドの実行は無意味ですから)

でも、ビルド定義の中で、どの分岐に対して実行するかという定義はありません。
ではどうするかというと、ビルド定義の中の「ソース設定」で切り分けます。

016

(今回使用した環境がTFServiceだったので、「$/BranchTest/Drops」があります。ローカルのTFServerの場合にはありません)

デフォルトではTFSのチームプロジェクトのルートフォルダが登録されていると思いますが、それを分岐したブランチに変更します。
→分岐時に作成したワークスペースで指定したソース管理フォルダと同じになります。

018

(「$/BranchTest/Drops」は残ったままだとビルド実行時にエラーになりましたので削除しました)

また、「プロセス」でビルド対象とするブランチ内のソリューションファイルを指定します。

017

これで、それぞれの分岐に対するビルド定義が作成できます。
「MAINブランチは定時ビルドだけにして、DEVELOPMENTビルドはゲートチェックインと定時ビルドを組み合わせて行う」といったこともできます。

ここまで出来れば、安心して分岐が使えるのではないかと思います。

TFSの分岐について:マージで競合が発生したとき

前回の続きです。

マージしたときに、マージした修正した内容が競合することがあります。
ありそうな例としては、こんな感じでMAINブランチにマージされたときです。

012_2

RELEASEブランチとDEVELOPMENTブランチで同じ処理に対して別々の修正を行ったときです。この例では、DEVELOPMENTブランチからMAINブランチにマージを行った時に競合となります。
TFSで競合を検知した場合、「競合の解決」画面が表示されます。

013_3

排他的に採用するときは「ターゲット分岐バージョンを保持する」もしくは「ソース分岐バージョンを保持する」ボタンを押します。

内容を確認しながら手動マージするときには「マージツールで変更をマージする」ボタンを押すと、編集画面が表示されます。

014_2

どちらか片方の修正部分をそのまま使用するときは、使用する側のチェックボックスをONにします。(両方のチェックボックスをONにすることも可能です。結果は下半分のエディタ画面に反映されます。)
どちらでもなく、独自の修正を行う場合は、下半分のエディタ部分で直接修正することも可能です。
調整が終わったら、「マージの許可」ボタンを押すと「競合の解決」画面に戻ります。

015

(「競合の解決」画面から、調整が終了したファイルはなくなっています)

その後、チームエクスプローラーの「保留中の変更」でチェックインします。

これで、分岐に関する基本的な操作は終了です
RELEASEブランチに対する操作についても、DEVELOPMENTブランチと同じになります。
(管理対象が異なるだけ)

VSSでは、追加開発中に障害対応が重なるとどうしようと悩んでましたが、これだけできれば安心して対応できます。

[2013/04/07追加]
分岐に対するビルド定義について追加しました。継続的インテグレーション(CI)までできないと安心できないですね^ ^;