2009-07-21 6 views
4

Ich versuche, eine Build-Pipeline mithilfe von TFS zu implementieren.Wie kann ich eine Build-Pipeline mit TFS implementieren

Wir haben bereits TFS bauen unsere Projekte nach jedem Commit. Aber der Build dauert zu lange, daher möchten wir den Build in zwei Phasen aufteilen. Kontinuierliche Integrationsliteratur schlägt diese Technik vor.

Also, was ich suche ist etwas, das folgende zu tun.

  • Entwickler überprüft in seinem Quellcode.
  • TFS löst automatisch einen Build aus, um den Code zu kompilieren und einige grundlegende Tests durchzuführen (das haben wir bereits). Der Entwickler erhält eine schnelle Rückmeldung, dass seine Änderungen nichts Offensichtliches gebrochen haben.
  • Als nächstes, wenn der Build erfolgreich war, wird ein neuer TFS-Task/Build ausgelöst, der die Artefakte von der vorherigen Stufe übernimmt und einige zeitaufwändigere Tests durchführt.

Alle Ideen, wie dies zu implementieren?

Antwort

2

1) Schreiben Sie einen Dienst, der für die BuildCompleted Ereignis hört. IIS webservice sample code. Self-hosted WCF sample code. In Ihrem Event-Handler können Sie entweder call the TFS Build API starten, um einen separaten Build-Typ zu starten, der zusätzliche Aufgaben definiert, oder einfach benutzerdefinierten Code direkt von hier aus ausführen.

2) Register your service mit TFS, eine server side filter on successful builds hinzuzufügen.

+0

Ich irgendwie gehüpft es gibt einen einfacheren Weg. Ich werde sehen, ob das funktioniert. –

0

Sie könnten Ihren Zwischenhändler oder kleinere Builds die resultierenden Assemblies in die Quellcodeverwaltung einchecken lassen. Auf diese Weise können Sie den anderen Build nutzen, um die bereits kompilierten DLLs zu verwenden, um den zweiten Teil des Systems zu packen und zu bauen.

Sie könnten die "größeren" Assembly Build haben, um Check-Ins von der Bibliothek zu hören Build-und montieren Sie die Builds abhängig von diesem.

Sicher, Sie bekommen Binärcode einchecken, aber wenn Sie etwas seltsames tun, sollten Sie genügend Festplattenspeicher haben.

1

Momentan verwenden wir das Ziel <AfterEndToEndIteration> in MSBuild und <Exec> in TfsBuild.exe.

<Target Name="AfterEndToEndIteration"> 
    <PropertyGroup> 
    <TfsBuildExecutable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\TfsBuild.exe</TfsBuildExecutable> 
    <CommandToTriggerNextStage>&quot;$(TfsBuildExecutable)&quot; start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Project\Next Stage&quot; /queue</CommandToTriggerNextStage> 
    </PropertyGroup> 

    <Exec Condition=" '$(Status)'!='Failed' " 
     Command="$(CommandToTriggerNextStage)" />  
</Target> 
Verwandte Themen