2009-03-09 11 views
4

私はTeam Foundation Server 2008をインストールすることができましたが、別のビルドサーバーを作成しました(ビルドに失敗しているため動作します)。Team Buildを使用してASP.NET Webアプリケーションを配備するにはどうすればよいですか?

私は単純な "Hello World" Webアプリケーションを作成しました(これらはすべて標準のDefault.aspxページです)。これをTFSのソース管理システムに入れました。

以前は、TFSの前に、私は単にWebアプリケーションをプリコンパイルして、結果を事前に作成したIIS仮想ディレクトリにコピーしていました。

Googleをしばらく検索しても、TFSソースからTeamBuild経由で指定したテストWebサーバーにアプリケーションを正しく配備するためのステップガイドはまだありません。私はMS Buildがこの方程式に入ることを知っているので、どんな指針も役立つでしょう。

_PublishedWebSitesなどのフォルダーを使用して、展開について少しは分かりましたが、まだ段階的に何かを見つけていません。

答えて

4

。権限があなたがにコピーしているサーバー上のフォルダにアクセスするためのTFSサービス利用者のために正しく設定する必要があること

<Target Name="AfterDropBuild> 
    <Exec Command="xcopy /Y /E &quot;$(DropLocation)\\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)\_PublishedWebsites\MyWebsite1\*.*&quot; &quot;\\server\MyWebsite1\&quot;" /> 
    <Exec Command="xcopy /Y /E &quot;$(DropLocation)\\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)\_PublishedWebsites\MyWebsite2\*.*&quot; &quot;\\server\MyWebsite2\&quot;" /> 
</Target> 

は注意してください。

+0

ここで説明した内容を概説した他のリソースが見つかりました。私は以前のソース管理システムからWebアプリケーションを正常に移行し、ビルドを作成し、図のように展開できました。コピーコマンド – kd7

2

これは、直接ビルドスクリプトを介して行うことができます、Vertigoソフトウェアの人は、通常このようなTFSの質問の多くの情報源として最適です...残念ながら、彼らのブログの投稿は通常、ジェフ・アトウッド、このサイトの制作者のうちの1つによってこの1の:私はTFSBuild.projファイル内AfterDropBuildターゲット内のexecタスクを使用して成功を収めてきた

Copying Web Files After a Team Build

4

まず、WebDeploymentプロジェクトを使用する必要があります。これは、コードとマークアップをさらにコンパイルしてチェックするためです。詳細はhereを参照してください。

私は、DV [開発]、PY [プロトタイプ]、PP [プリプロダクション]、PD [プロダクション]の4つの環境設定TFSのすべてのブランチを持っています。これらのそれぞれには、sln構成マネージャーにエントリがあります。ここでは、ビルドする必要があるプロジェクトとビルドフラグを設定できます。

正しく設定されたら、展開スクリプトの設定を開始できます。私は、MSbuildを使用して展開することをお勧めします。これは、展開に対するきめ細かなアプローチを提供するためです。 MSbuildはやや奇妙なことですが、一度それを取得するとかなり強力です。

TeamBuildの設定に追加された私のデプロイメントスクリプトは以下の通りです。基本的に見ると、ライブサーバーにコピーする前に、ビルド後のクリーンアップを少し行います。私はまた2つのMSbuildフレームワークを使用しています(一番上にインポートされています)。

<Import Project="$(MSBuildExtensionsPath)\Microsoft\SDC Tasks - Release 2.1.3155.0\Microsoft.Sdc.Common.tasks"/> 
<Import Project="$(MSBuildExtensionsPath)\FreeToDev\MSBuild Tasks Suite 3.5\FreeToDev.MSBuild.tasks"/> 

<PropertyGroup> 
    <InetpubFolder>\\PathToInetPub</InetpubFolder> 
    <AppFolder>AppFolder</AppFolder> 
    <AppFolderPath>$(InetpubFolder)$(AppFolder)</AppFolderPath> 
    <WebDeployName>WebDeployProjectName</WebDeployName> 
    <Debug>0</Debug> 
    <AppConfiguration>DV</AppConfiguration> 
</PropertyGroup> 

<Target Name="AfterDropBuild"> 
    <Message Text="Begin Release to $(AppConfiguration) Webserver" /> 
    <Message Text="DropLocation = $(DropLocation)" /> 
    <CallTarget Targets="PostBuildCleanUp" /> 
    <CallTarget Targets="DeployApp" /> 
</Target> 

<Target Name="DeployApp"> 

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)"> 
     <Output TaskParameter="DropLocation" PropertyName="DropLocation"></Output> 
    </GetBuildProperties> 

    <PropertyGroup> 
     <CodeDropLocation>$(DropLocation)\$(AppConfiguration) Release</CodeDropLocation> 
    </PropertyGroup> 

    <ItemGroup> 
     <AppFilesToDelete Include="$(AppFolderPath)\**\*.*" Exclude="$(AppFolderPath)\Library\*.*;$(AppFolderPath)\App_Offline.htm;$(AppFolderPath)\jobs\**\*.*" /> 
    </ItemGroup> 

    <ItemGroup> 
     <FilesToDeploy Include="$(CodeDropLocation)\$(AppFolder)\**\*.*" Exclude="" /> 
    </ItemGroup> 

    <Copy SourceFiles="$(CodeDropLocation)\$(AppFolder)\App_Offline[RemoveToActivate].htm" DestinationFiles="$(AppFolderPath)\App_Offline.htm" OverwriteReadOnlyFiles="true"/> 

    <Message Text="Deleting files in $(AppFolderPath)" /> 
    <Microsoft.Sdc.Tasks.File.DeleteFiles Files="@(AppFilesToDelete)" Force="true" Condition="$(Debug)==0" /> 

    <Message Text="Copy $(CodeDropLocation)\$(AppFolder) to $(AppFolderPath)" /> 
    <Copy Condition="$(Debug)==0" SourceFiles="@(FilesToDeploy)" DestinationFiles="@(FilesToDeploy->'$(AppFolderPath)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true"/> 

    <Message Text="Deploy to $(AppConfiguration) Completed" /> 
    <Microsoft.Sdc.Tasks.File.DeleteFiles Files="$(AppFolderPath)\App_Offline.htm" Force="true" /> 

    <OnError ExecuteTargets="ErrorHandler" /> 
</Target> 

<Target Name="ErrorHandler"> 
    <Message Text="Error encountered!!" /> 
</Target> 

<Target Name="PostBuildCleanUp"> 

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)"> 
     <Output TaskParameter="DropLocation" PropertyName="DropLocation"></Output> 
    </GetBuildProperties> 

    <PropertyGroup> 
     <CodeDropLocation>$(DropLocation)\$(AppConfiguration) Release</CodeDropLocation> 
    </PropertyGroup> 

    <ItemGroup> 
     <PostBuildCleanUpFilesToDelete Include="$(CodeDropLocation)\*.*;$(CodeDropLocation)\bin\*.xml;$(CodeDropLocation)\bin\*.pdb"/> 
    </ItemGroup> 

    <RemoveDir Directories="$(CodeDropLocation)\_PublishedWebsites\Web" /> 
    <Microsoft.Sdc.Tasks.File.DeleteFiles Files="@(PostBuildCleanUpFilesToDelete)" Force="true"> 
     <Output TaskParameter="DeletedFiles" ItemName="FilesThatWereDeleted" /> 
    </Microsoft.Sdc.Tasks.File.DeleteFiles> 
    <Message Text="The files that were removed were @(FilesThatWereDeleted)" /> 

    <FTDFolder TaskAction="Move" Path="$(CodeDropLocation)\_PublishedWebsites\$(WebDeployName)" TargetPath="$(CodeDropLocation)\$(AppFolder)"/> 

    <RemoveDir Directories="$(CodeDropLocation)\_PublishedWebsites" /> 

    <RemoveDir Directories="$(CodeDropLocation)\$(AppFolder)\WebDeploy" /> 

    <OnError ExecuteTargets="ErrorHandler" /> 
</Target> 

明らかに、システムセットアップに変更する必要があります。また、新しいビルド全体をコピーする前にターゲットフォルダをクリアします。これは、システムがきれいであることを確認するためですが、明らかに、ExcludedFilesリストに保存する必要があるものを追加する必要があります。

また、メインアプリケーションプロジェクト内の各環境に対応するフォルダもあります。これには、web.configの置き換え(WebDeploymentプロジェクトの別の機能)とその他の環境指定ファイルが含まれます。

正しく動作させるには長いプロセスですが、うまくいけば、これが始まるでしょう!

関連する問題