2012-04-02 23 views
3

Ich habe eine gemischte Lösung mit einigen Webanwendungen und SQL-Datenbankprojekten.Bereitstellen von Datenbank- und Webprojekten während des TFS-Erstellungsprozesses

Ich habe auch einen Remote-Test-Server mit MS SQL 2012 und IIS 7. Der TFS-Build-Server ist auf einem anderen Rechner. Alle Server sind auf einer einzigen Domäne konfiguriert.

Ich möchte die Datenbanken und die Webanwendungen während des Erstellungsprozesses bereitstellen.

Jetzt habe ich Build Paket Generation in einer TFS XAML Prozess Datei mit den folgenden Flags eingerichtet:

/p:DeployOnBuild=True 

und ich habe auch andere Flaggen für die Web-Publishing einrichten:

/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=True 
/p:MsDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 

aber Ich bin ein wenig verwirrt, welche Methode ich verwenden sollte: WMSVC oder Remote Agent oder etwas anderes. Welcher ist der einfachste Weg, um das Web-Deployment vom TFS-Build-Server zum IIS 7-Server einzurichten und Probleme mit Benutzerkonten zu vermeiden (um die Einstellung/p: Username = YOURUSERNAME /p: Passwort = YOURPASSWORD in XAML oder Build-Definition)?

Die andere Sorge betrifft Datenbankprojekte. Der Erstellungsprozess hat einige .dacpac-Dateien generiert. Was wäre der beste Weg, sie aus dem TFS-Build-Prozess XAML zu implementieren?

Da meine Lösung verschiedene Arten von Projekten enthält, bin ich mir nicht sicher, wie ich meinen Build-Prozess anpassen kann, damit er erkennt, welche Projekte Datenbank bereitstellen müssen und welche Web-Bereitstellung benötigt.

Ich hoffe, dass MSBuild/MSDeploy schlau genug ist, diese/p: -Flags einfach zu ignorieren, wenn das aktuelle Projekt keine Web-App ist oder vielleicht einen Fehler für den gesamten Build-Prozess erzeugt?

+2

Ich erstelle dies nur aus einer langen Zeit, so ist es nicht aktualisiert, so habe ich nicht beantwortet Ihre Frage mit diesem Beitrag, aber immer noch gültig und kann Ihnen helfen http://mohamedradwan.wordpress.com/2010/10/23/ auto-deploy-your-website-für-qa-mit-team-build/der zweite http://mohamedradwan.wordpress.com/2010/10/15/deploy-db-project-with-team-build-2010 / –

Antwort

3

Diese beiden Websites:

You are deploying it wrong

Headless msbuild support for ssdt sqlproj projects

hat mir sehr geholfen, alles richtig einzurichten.

Und jetzt weiß ich, dass WMSVC ist bevorzugt (über RemoteAgent) -Methode für die Remote-Veröffentlichung auf IIS7, aber ich muss WebDeploy auf dem Zielserver installieren. Auf localhost InProc funktioniert gut.

Ein großes Problem war, dass ich mir die Haare auszog und versuchte, Web-Apps zu veröffentlichen, nachdem ich alle Lösungen erstellt hatte, aber MSBuild sagte immer wieder "Überspringbare Anwendungen überspringen".

Und das Problem war

Targets="Publish" 

in meinem MSBuild-Skript. Als ich änderte es zu

Targets="Build" 

und legen Eigenschaften für mein Projekt:

Configuration=Release; 
    SkipInvalidConfigurations=true; 
    DeployOnBuild=true; 
    CreatePackageOnPublish=true; 
    AllowUntrustedCertificate=true; 
    DeployTarget=MsDeployPublish; 
    MSDeployPublishMethod=InProc; 
    MsDeployServiceUrl=localhost; 
    DeployIISAppPath=Default Web Site\MyWebApp 

es tatsächlich endlich begann auf meinem localhost zum IIS7 veröffentlichen.

Uhh, warum veröffentlicht das Publizierungsziel nicht, aber nur Build Ziel tut? Das ist ein Rätsel für mich. Vor allem, weil ich Publish target für meine sqlproj-Projekte verwende und sie tatsächlich auf dem SQL-Server veröffentlicht werden.