2013-01-09 14 views
9

Próbuję użyć MSDeploy do wdrożenia projektu MVC do serwera przy użyciu TeamCity. Kiedy zrobić to na moim komputerze w powershell, za pomocą następującego polecenia:WebDeploy z MSBuild nie wdrażanie z TeamCity

msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0 
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true 

Buduje projekt i wdraża je do serwera (o zdefiniowanej w DevServer profilu publikowania) doskonale. Wyjście pokazuje przekrój MSDeployPublish na końcu, w którym widzę tekst jak Starting Web deployment task from source... a następnie z wierszy mówi mi jakie pliki są aktualizowane, itp

Gdy uruchomię to na TeamCity, stosując MSBuild Budowanie krok, na tym samym plik o tych samych parametrach (z tego samego katalogu roboczego) buduje projekt, ale go nie publikuje. Zamiast tego ma regularne wyjście z procesu kompilacji (CoreCompile, _CopyFilesMarkedCopyLocal, GetCopyToOutputDirectoryItems, CopyFilesToOutputDirectory), ale w rzeczywistości nie publikuje niczego.

Jakie zmiany muszę wprowadzić w konfiguracji w TeamCity, aby zmusić ją do opublikowania wdrożenia w taki sam sposób, jak działa przy użyciu MSBuild z mojego komputera?

(TeamCity 7.1, MSBuild 4.0, WebDeploy 3.0, Visual Studio 12, IIS 7. związanych z my previous question)

+1

Czy możesz pokazać dowolne części swojego PublishProfile? Mamy dobrą konfigurację WebDeploy, ale nie używamy PublishProfile i chciałbym sprawdzić, czy mogę sprawić, by mój był odpowiedni. –

+0

Odświeżona wersja PublishProfile jest dostępna tutaj: https://gist.github.com/7326d2a7f5523058d662 –

+0

Yaakov, czy zrezygnowałeś z używania PublishProfile, a następnie użyłeś dodatkowych parametrów? –

Odpowiedz

10

Robimy nasze WebDeploys z kroku TeamCity MSBuild skonfigurować następująco:

Build File Path: Server.csproj 

Command Line Parameters: 
/p:Configuration=%configuration% 
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MsDeployServiceUrl=https://%web.deploy.server%:8172/MsDeploy.axd 
/p:DeployIisAppPath=%web.deploy.site% 
/p:AllowUntrustedCertificate=True 
/p:Username= 
/p:AuthType=NTLM 

Używamy zintegrowanego uwierzytelniania; zmienić w razie potrzeby, aby pasował do twojego schematu. Myślę, że wartość tego wszystkiego polega na tym, że buduje wszystko od zera i nie polega na gotowym pakiecie.Z opublikowanej przeze mnie istoty zauważyłem, że publikujesz trochę DB, nie używamy do tego WebDeploy, więc nie mogę tam podać żadnych wskazówek. Mam nadzieję że to pomoże.

+0

Brak publikowania bazy danych za pomocą różnych ciągów połączeń w pliku web.config w zależności od konfiguracji kompilacji. –

+0

Gotcha. Coś, co otrzymasz za darmo w powyższym podejściu (i być może przy użyciu WebDeploy?) Jest to, że wykona [transformacje Web.config] (http://msdn.microsoft.com/en-us/library/dd465318. aspx) dla ciebie. –

9

używam MSBuild.exe pakować do zip i MSdeploy.exe wdrożyć w oddzielnych etapach.

Aby wdrożyć plik package.zip w wierszu poleceń:

"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" -verb:sync 
    -source:package="C:\Build\MyAppName.Debug.zip" 
    -dest:auto,wmsvc=webservername,username=webdeploy,password=******* 
    -allowUntrusted=true 

Komenda ta jest również warto wyjaśniając szczegółowo:

-verb: sync: sprawia synchronizację stronie od źródła do docelowy

-source: pakiet = "C: \ Budowa \ MyAppName.Debug.zip": source jest pakiet MSBuild plik zip

-dest: auto, wmsvc = webservername: u se ustawienia w pliku pakietu do wdrożenia na serwerze. Konto użytkownika jest kontem na poziomie systemu operacyjnego z uprawnieniami. Nazwa hosta jest określona, ​​ale nie nazwa witryny internetowej IIS (która została wcześniej określona w pliku projektu MSBuild we właściwościach projektu).

Możesz modyfikować parametry w oparciu o swoją konfigurację. Podoba mi się to w ten sposób, ponieważ dzięki osobnym krokom łatwiej jest rozwiązywać problemy.

Użyj kroku budowania TeamCity i biegacza linii poleceń.

Aktualizacja: Jeśli chcesz przykład jak zbudować pakiet ZIP korzystając MSBuild, spróbuj coś takiego:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" 
MyWebApp/MyWebApp/MyWebApp.csproj 
/T:Package 
/P:Configuration=Debug;PackageLocation="C:\Build\MyWebApp.Debug.zip" 

to powinno działać tak samo na komputerze lokalnym, jak i na Serwer CI.

+0

Byłbym w porządku z tym, ale nie mogę nawet znaleźć niczego w wynikach kompilacji mojego bieżącego kroku o tym, gdzie generuje pakiet kompilacji, który mógłby następnie zostać wdrożony (to pojawia się na moim komputerze, jeśli uruchomię to samo polecenie bez określanie 'VisualStudioVersion = 11.0') –

+0

Czy można uruchomić lokalnie w wierszu poleceń na serwerze z instalacją TeamCity? Możesz uzyskać dodatkowe wyniki. –

4

Oto ustawienia konfiguracyjne, które ostatecznie pracował dla mnie:

/p:Configuration=CONFIG-NAME 
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MsDeployServiceUrl=http://SITE-URL/MsDeployAgentService 
/p:username="USERNAME" 
/p:password=PASSWORD 
/p:AllowUntrustedCertificate=True 
/P:CreatePackageOnPublish=True 
/p:DeployIisAppPath=SITE-URL 
/p:MSDeployPublishMethod=RemoteAgent 
/p:IgnoreDeployManagedRuntimeVersion=True 
+0

Musiałem również zrezygnować z używania PublishProfile i zamiast tego używać dodatkowych parametrów jak wyżej .. wstyd naprawdę. Nie wiesz, dlaczego nie możemy używać PublishProfiles w tym scenariuszu? –

0

miałem dokładnie ten sam problem! I zostały zaksięgowane rozwiązanie użyłem na co: MsBuild not finding publish profile

Podstawy były:

  • Zainstalować Azure SDK 1.8 na serwerze kompilacji
  • Wymusza/P: wartość PublishProfileRootFolder celu zapewnienia MSBuild można zlokalizować publikuj profil
+0

Oprócz poprawki musiałem dodać parametr system.VisualStudioVersion o wartości 11.0. Używamy kombinacji Visual Studio 2012 i 2013 w projekcie, ale tylko 11.0 działało w TeamCity. Jeśli ustawię go na 12,0, profil publikowania zostanie zignorowany ponownie. –

0

Upewnij się, że masz zainstalowaną funkcję Visual Studio dla Microsoft Web Developer Tools. Tego nie było w moim agencie kompilacji, ale po dodaniu go, kompilacja TeamCity działała dobrze.

Powiązane problemy