TFS2010 Build-Definition für die Bereitstellung auf mehreren Servern?
Habe ich in TFS2010 neue build-und deployment-Funktionen mit MSDeploy. So weit alles gut geht (obwohl Ihr seit schwer zu finden, Informationen zu bestimmten Szenarien).
Kann ich ändern, meine Build-Definition angeben, 2 oder mehr Server bereitstellen? Was ich tun müssen, ist die Bereitstellung auf mehreren Servern (wie ich zwei in meiner Testumgebung, die über eine NLB).
Was ich jetzt haben, ist eine Build-definition Aufbaut, läuft meine tests, und dann Setzt zu EINEM meiner Test-Servern (die das MsDeployAgentService ausgeführt). Es funktioniert gut, und jedes web-Projekt bereitgestellt wird entsprechend der Konfiguration in Ihr Projekt-Datei. Der MSBuild-Argumente, die ich benutze sind:
* /p:DeployOnBuild=True
* /p:DeployTarget=MsDeployPublish
* /p:MSDeployServiceURL=http://oawww.testserver1.com.au/MsDeployAgentService
* /p:CreatePackageOnPublish=True
* /p:MsDeployPublishMethod=RemoteAgent
* /p:AllowUntrustedCertificated=True
* /p:UserName=myusername
* /p:Password=mypassword
NB: I dont use /p:DeployIISAppPath="xyz" als es nicht bereitstellen, alle meine Projekte und überschreibt mein Projekt config.
Kann ich hinzufügen, eine andere build-argument, um es zu nennen, mehr als ein MSDeployServiceURL? Wie so etwas wie eine zweite /p:MSDeployServiceURL argument, dass gibt einen anderen server?
Tun oder muss ich mich für eine andere Lösung, wie die Bearbeitung der WF?
Sah ich eine fast exakt gleiche Frage hier gepostet vor 2 Monaten: TFS 2010 - Bereitstellung auf Mehreren Servern Nach Bauen , so sieht es nicht aus, ich bin der einzige Versuch, diese zu lösen.
Ich auch geschrieben auf der IIS.NET Foren, in denen MSDeploy diskutiert wird: http://forums.iis.net/t/1170741.aspx . Es hatte eine ganze Menge von Ansichten, aber wieder keine Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht haben, um das Projekt zu erstellen, zweimal, um die Bereitstellung auf zwei Servern. Der build-Prozess erstellt eine Reihe von deployment-Dateien. Sie können dann die InvokeProcess für die Bereitstellung auf mehreren Servern.
Erstellen zuerst eine variable mit dem Namen Projektname. Dann fügen Sie eine Assign-Aktivität, um das "Projekt Kompilieren" - Sequenz. Diese befindet sich in der "Versuchen, Kompilieren Sie das Projekt" Sequenz. Hier sind die Eigenschaften des Weisen:
Hier sind die Eigenschaften unserer InvokeProcess activity, setzt auf die test-server:
Wenn Sie manuell die Bereitstellung auf einem server und führen Sie den Befehl unten aus dem build-Ordner:
Konnte ich nicht finden die Lösung, die ich suchte, aber hier ist was ich kam mit am Ende.
Wollte ich die Lösung einfach und konfigurierbar innerhalb des TFS Argumente, während zur gleichen Zeit bleiben im Einklang mit den bereits zur Verfügung gestellt
MSBuildArguments
Methode, die gefördert worden ist, eine Menge. Also ich habe eine neue Build-Vorlage, und fügte hinzu, eine neue TFS-WorkFlow-Argument genanntMSBuildArguments2
im Arguments-tab des WorkFlow.Ich durchsuchte den BuildTemplate WorkFlow für alle stellen der
MSBuildArguments
(es waren zwei Ereignissen).Den beiden Aufgaben, dass die Verwendung
MSBuildArguments
genanntRun MSBuild for Project
. Direkt unter dieser Aufgabe, ich habe eine neue "If" - block mit der Bedingung:Ich dann kopiert den "Lauf für MSBuild-Projekt" Aufgabe, und klebte es in die neue, Wenn die "Dann" - block, der Aktualisierung seiner Titel entsprechend. Sie müssen auch ein update der neuen Aufgabe ConmmandLineArguments Eigenschaft, um Ihr neues Argument.
CommandLineArguments = String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments2)
Nach diesen änderungen, wird der WorkFlow sieht wie folgt aus:
Speichern und Überprüfen Sie den neuen WorkFlow. Aktualisieren Sie Ihre Build-Definition zur Verwendung dieser neuen WorkFlow -, dann in der build-definition Registerkarte "Prozess" finden Sie eine neue Sektion namens " Misc mit dem neuen argument verwendet werden kann. Da bin ich einfach mit diesem neuen argument für die Bereitstellung kopiert habe ich die exakt gleichen Argumente, die ich für
MSBuild Arguments
und aktualisiert die MSDeployServiceURL zu meiner zweiten deployment server.Dass. Ich nehme an, eine elegantere Methode wäre, um zu konvertieren MSBuildArguments in ein String-array und Durchlaufen während der WorkFlow-Prozess. Aber das passt unseren 2 server-Anforderungen.
Hoffe, das hilft!
Meine Lösung dafür ist, ein neues Ziel, das läuft nach Paket. Jedes Projekt benötigt ein Paket enthält dieser targets-Datei, und habe ich mich entschieden, die bedingte auf einem extern-set "DoDeployment" - Eigenschaft. Zusätzlich wird jedes Projekt definiert die DeploymentServerGroup Eigenschaft so ein, dass die Ziel-server(s) korrekt gefiltert, je nachdem, welche Art von Projekt es ist.
Wie Sie sehen können, nach unten bin ich einfach der Ausführung des Befehls Datei mit der server-Liste, ziemlich einfach.
-->
Ich bin der Autor von den anderen ähnlichen post. Ich habe noch eine Lösung zu finden. Ich glaube, es geht um das ändern der workflow hinzufügen, um eine Nachbearbeitung der MSBUILD -Aufgabe sync. Das scheint die eleganteste, aber war immer noch in der Hoffnung, etwas zu finden, ein bisschen weniger aufdringlich.
Ich bin mir nicht sicher, ob das dir helfen könnte mit TFS 2010, aber ich habe einen blog post für TFS 2012: Mehrere web-Projekte, Bereitstellung von TFS 2012 zum NLB-fähigen Umgebung.