2010-09-03 29 views
10

Tôi đang cố gắng để tự động hóa quá trình xây dựng/triển khai của chúng tôi.Làm thế nào để MSDeploy một gói trang web được xây dựng đến một trang web trinh nữ IIS

Cho đến nay tôi đang sử dụng:

  • một Visual giải pháp Studio 2010 với một dự án chính Web Application (và các dự án phụ thuộc)
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

Vì vậy, sau nhiều lần cãi nhau và nghiến răng, bây giờ tôi có CCNet khởi động một kịch bản MSBuild để xây dựng, đóng gói và triển khai trang web. Các MSBuild kịch bản là dưới đây:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<Target Name="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln" 
        Targets="Clean;Rebuild" 
        Properties="Configuration=$(Configuration)" 
    /> 
</Target> 

<!--<Target Name="Test" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj" 
        Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" /> 
    <Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" /> 
</Target>--> 

<Target Name="Package" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj" 
        Targets="Package" 
        Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip" 
    /> 
</Target> 

<Target Name="Deploy" DependsOnTargets="Package"> 
    <Exec Command="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" /> 
</Target> 

này tất cả hoạt động tốt chừng nào trên máy mục tiêu đã có một trang web được cấu hình trong IIS. Điều này không cần phải là một trang web "thực" hiện có (nó chỉ có thể là một trình bao).

Trong khi điều này thật tuyệt, tôi thực sự muốn MSDeploy tự động tạo trang web, vì có vẻ như nó có thể làm với một ứng dụng web. Điều này có thể không? Và nếu như vậy bất kỳ trợ giúp sẽ được đánh giá rất nhiều!

Trả lời

4

Khá chắc chắn MSDeploy không thể làm điều đó. Một điều tôi đã làm trong quá khứ là có một lệnh gọi hàm exec appcmd.exe để phá bỏ/xây dựng một trang web mới. MSBuild Community Tasks có một số khả năng trang web cũng như MSBuild Extension Pack.

+1

Đây cũng là những gì tôi đã tìm thấy - Tôi đã sử dụng msdeploy -verb: sync -source: runCommand = c: \ mycommand.bat, computername = MyServer -dest: auto, trong đó mycommand.bat chứa các lệnh appcmd.exe để tạo trang mới trong IIS – zcrar70

10

MSDeploy có khả năng, bạn chỉ cần móc đúng nhà cung cấp. Ví dụ: bạn đang sử dụng nhà cung cấp "tự động" ở điểm đến của bạn, về cơ bản, điểm đến sẽ giống như (hoặc tương thích với) nguồn mà bạn đang thiết lập làm gói. Vì một gói không chỉ định môi trường lưu trữ của nó, nên msdeploy sẽ không cố gắng làm bất cứ điều gì với nó, nó sẽ chỉ sao chép các tệp từ gói đó về cơ bản.

Bạn đang kêu gọi tự động trong (các "-dest: auto"):

-dest:auto,computerName='$(MSDeployComputerName)' 

Để có được msdeploy để tạo ra các trang web, bạn cần phải sử dụng một nhà cung cấp cụ thể hơn mà hiểu các khái niệm về một "trang web" và "ứng dụng" và cách chúng có thể sử dụng gói như nội dung của phần tử trang web.

Tôi đã không làm điều này trong một thời gian, vì vậy tôi không muốn đặt ra chi tiết cụ thể (như tôi sẽ chỉ đạo bạn sai), nhưng hãy xem tài liệu MSDN trên các nhà cung cấp msdeploy.

Cái nhìn đầu tiên tại tự động, cài đặt hiện tại của bạn. Sau đó, hãy xem iisAppappHostconfig.

http://technet.microsoft.com/en-us/library/dd569040(WS.10).aspx

Tôi tin rằng một trong những 2 sẽ tạo ra các trang web/ứng dụng cho bạn nếu được sử dụng một cách chính xác, và sẽ cung cấp cho bạn những kết quả mà bạn cần.

+0

appHostConfig có thể sao chép cấu hình IIS sang một trang mới trên máy chủ đích, nhưng tôi không nghĩ rằng nó có thể tạo một trang mới từ đầu trên máy chủ đích mà không có nguồn để sao chép. – zcrar70

+0

yeah, tại thời điểm tôi không thể nhớ vì vậy tôi liệt kê cả iisApp và appHostConfig. Nhà cung cấp iisApp móc nhà cung cấp createApp, nên tạo trang web –

Các vấn đề liên quan