2010-09-03 14 views
10

Próbuję zautomatyzować proces budowania/wdrażania.Jak zainstalować pakiet witryny sieci Web na stronie Virgin IIS

tej pory używam:

  • Visual Studio 2010 roztwór o główne zastosowanie projektu internetowej (i projektów zależnych)
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

Po wielu próbach i zgrzytaniu zębów, mam teraz CCNet uruchamiający skrypt MSBuild w celu zbudowania, pakowania i wdrażania witryny. MSBuild skrypt jest poniżej:

<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> 

To wszystko działa w porządku tak długo, jak na komputerze docelowym istnieje już strona skonfigurowany w IIS. To nie musi być istniejąca "prawdziwa" strona (może to być po prostu powłoka).

Chociaż jest to świetne, naprawdę chcę, aby MSDeploy automatycznie tworzył witrynę, ponieważ wygląda na to, że może działać z aplikacją internetową. czy to możliwe? A jeśli tak, wszelka pomoc byłaby ogromnie doceniona!

Odpowiedz

4

Jestem pewien, że MSDeploy nie może tego zrobić. Jedną z rzeczy, które zrobiłem w przeszłości, jest wywołanie aplikacji Exec appcmd.exe w celu wyburzenia/zbudowania nowej strony internetowej. The MSBuild Community Tasks mają pewne możliwości strony internetowej, a także MSBuild Extension Pack.

+1

To także znalazłem - użyłem msdeploy -verb: sync -source: runCommand = c: \ mycommand.bat, computername = MyServer -dest: auto, gdzie mycommand.bat zawiera polecenia appcmd.exe utwórz nową witrynę w IIS – zcrar70

10

MSDeploy ma taką możliwość, wystarczy podpiąć odpowiedniego dostawcę.

Na przykład używasz operatora "auto" w miejscu docelowym, co zasadniczo oznacza, że ​​miejsce docelowe będzie takie samo jak (lub kompatybilne) ze źródłem, które konfigurujesz jako pakiet. Ponieważ pakiet nie określa swojego środowiska hostingowego, msdeploy nie zamierza nic z nim zrobić, po prostu skopiuje pliki z pakietu w zasadzie.

Telefonujesz auto w („-dest: auto”):

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

Aby uzyskać msdeploy stworzyć witrynę, trzeba użyć bardziej konkretnego dostawcę, który rozumie pojęciami "witryna" i "aplikacja" oraz sposób wykorzystania pakietu jako zawartości elementu witryny.

Nie zrobiłem tego przez jakiś czas, więc nie chcę określać szczegółów (ponieważ prawdopodobnie nie będę się kierował błędem), ale spójrz na dokument MSDN na temat dostawców msdeploy.

Pierwsze spojrzenie na auto, Twoje bieżące ustawienie. Następnie spójrz na iisApp i appHostconfig.

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

wierzę jeden z tych 2 stworzy stronę/aplikację dla ciebie, jeśli są stosowane prawidłowo i daje wynik trzeba.

+0

appHostConfig może skopiować konfigurację IIS do nowej witryny na serwerze docelowym, ale nie sądzę, że może utworzyć nową witrynę od zera na serwerze docelowym bez źródła, z którego można kopiować. – zcrar70

+0

tak, wtedy nie mogłem sobie przypomnieć, więc wymieniłem zarówno iisApp, jak i appHostConfig. Dostawca iisApp przechwytuje dostawcę createApp, który powinien utworzyć witrynę –