今年の4月頃に書いてたけど、ASP.NET WebサイトをTeam Foundation ServiceからAzure Webサイトにデプロイしようとするとエラー - なか日記でハマってしまい、放置してた。そういえばと思いだして半ば強引に解決させたので、それをベースに仕上げちゃったエントリ。
Team Foundation Service(以下、TFS)にチェックインしたら、Azure Webサイトに自動でデプロイしてくれる方法が以下に載ってたので試してみた。
http://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-tfs/
材料
とはいうものの、Azure Webサイトにデプロイするネタがない・・・そうだ!あれを使わしてもらおう!
https://github.com/daruyanagi/uhobbs
これが何なのか、詳しい説明は[twitter:@daruyanagi]に聞いてくれ
チームプロジェクトの作成
GitHubに公開されているので、Gitを使いたいところではあるが、AzureからGitリポジトリのTFSには接続できないようなので、ここは「New Team Project」を選択しよう。
はやる気持ちを抑えつつ、プロジェクト名や説明を記入してチームプロジェクトを作成しよう。
Azure Webサイトの作成
適当なURLでWebサイトを作成しよう。
作成されたサイトを選択すると、以下の様な画面が表示される。そう、ここで「ソース管理の統合 ソース管理からのデプロイの設定」を選択するのだ!
以下の様にソースコードを置いているサービスを選択する画面が表示される。
TFSやCodePrexだけでなく、GitHubやDropBox、BitBucketまで対応しているのは知らなかった。
ここは初志貫徹でTFSを選択しよう。
TFSの接続承認画面が表示されるので、自分が管理しているTFSアカウント名を入力し、「今すぐ承認」しよう。 認証画面が表示されるが、「Accept」ボタンを押すだけで良いはずだ。
最後の「発行の設定」でTFS上のチームプロジェクトを選択する。リポジトリにGitを選択した場合には、ここのドロップダウンに表示されない*1ので注意が必要だ。
デプロイを選択して以下の様になっていれば設定は完了だ。次へ進もう。
Gitでの操作
GitHubからuhobbsのクローン
まずはホ…いや、本家からソース一式をクローンしよう。
> git clone git://github.com/daruyanagi/uhobbs.git
VisualStudioの起動とTFSへの接続
まずはVisualStudio*2を起動し、チームエクスプローラからTeam Foundation サービスに「接続」を行おう。この辺の表示はVisualStudioに適用しているUpdateで多少変わるようだ。
初めて接続する場合にはサーバの登録が必要になるがそれほど迷うことはないだろう。
TFSへのチェックイン
クローンしたuhobbsをVisualStudioで開くわけだがちょっと待て。メニューからファイル→開く→Webサイトとすれば開けるが、後でハマるぞ。
ここは新しくプロジェクトを作成しよう。プロジェクトの種類は「ASP.NET 空の Web アプリケーション」だ。
次にプロジェクトエクスプローラーから「ソリューションをソース管理に追加」しておこう。
そしてチームエクスプローラーから保留中の変更をチェックインしよう。
チェックインが完了したら、チームエクスプローラーのビルドを見てみよう。マイ ビルドにキューイングされているビルドがある。これがプロジェクトのビルドを行い、Azure Webサイトへのデプロイまでを行うビルドになる。先ほどのAzure Webサイトで行った設定で自動的にビルドの定義もしてくれるのだ。スバ、ラッシイ。
ビルドが完了するまでそれなりに時間がかかる。こういう時のために小噺を用意しとくのは大人のたしなみというものだが、あいにく今日は準備してきていない。各自、トイレに行くなり飲み物を取りに行くなりして時間を潰すのがいいだろう。
しばらくしてこんな風になれば成功だ。おめでとう。
しかし、まだ肝心の ホモBBS uhobbsはプロジェクトに含まれていないので誰も嬉しくない。
プロジェクトに含めるには先ほどgitでクローンしたソースを丸ごとWeb アプリケーションの中につっこんでしまえば良い。
binもソース管理に含めているのはuhobbsが使用しているアセンブリを参照設定でチェックするのが面倒くさかったからだ。ものぐさなので大目にみて欲しい。
この状態ですべてのファイルをチェックインしよう。先ほどと同じようにビルドがキューイングされる。BBSのデプロイまでもうすぐだ。今のうちにトイレに行ってこい。
やったぜ父ちゃん!