2016-05-06 29 views
0

Wir haben eine sehr lange laufende Build und wir versuchen, es in inkrementelle Builds zu brechen. Der Code ist C#/net mit jenkins als Build-Manager und TFS (Visual Studio Online als Quelle Steuerung)Können Sie inkrementelle Builds über Jenkins TFS konfigurieren

So ist die Architektur aussehen würde.

  1. Area 1 (1 oder mehr Lösungen)
  2. Area 2 (1 oder mehr Lösungen)
  3. Area 3 (1 oder mehr Lösungen)

die Idee ist, dass, wenn Code in Area 1, die dazugehörigen Lösungen nur für diesen Bereich eingecheckt werden gebaut und Die Tests für diesen Bereich werden ausgeführt. Wir hätten dann auch einen nächtlichen Build, der alles baut.

Meine Frage ist, ist es für Jenkins/TFS möglich zu erkennen, welcher Bereich des Codes eingecheckt wurde und eine Variable (oder eine Liste von Variablen) in das Build-Skript übergeben, die ihm sagt, welche Elemente zu erstellen/testen?

+0

Was ist die Detailversion Ihres TFS-Servers?Meinten Sie, Sie benutzen Visualstudio nur online? Und was ist das Build-System, das Sie verwenden? VNext oder XAML? –

+0

Verwenden Sie nur Visual Studio Online, kein TFS-Server. Verwenden von MSBuild-Skripts zum Ausführen des Builds (über MSBuild-Task in Jenkins) – jazza1000

Antwort

1

Der Visual Studio-Teamdienst (Visual Studio Online) unterstützt die Versionskontrolle von Git und Team Foundation (TFVC).

Wenn Sie TFVC für die Versionskontrolle verwenden, kann VSTS erkennen, welcher Codebereich eingecheckt wurde. Es kann Jenkins jedoch nicht mitteilen, welcher Bereich aktualisiert und aufgebaut wird. Der alternative Weg wäre, drei Jenkins-Jobs für die drei Bereiche zu erstellen, die von drei VSTS-Service-Hooks ausgelöst werden.

Zum Beispiel haben Sie drei Bereich in "Test" Projekt, so dass die Ordnerstruktur wird:

$/Test

---/Area1

------/Porjects & Lösungen

---/Area2

------/Porjects & Lösungen

---/Bereich3

------/Porjects & Lösungen

Sie können einen Jenkins Service-Hooks für Area1 erstellen, wie nach dem Jenkins Job für Area1 auslösen: enter image description here

Und in der Jenkins, die Einstellung für Area1 Job aktualisieren, um nur die Quelldatei für Area1 zu erhalten: enter image description here

nun nur, wenn der Code in Area1 eingecheckt wird, Der Jenkins-Job für Area1 kann ausgelöst werden. Wiederholen Sie die obigen Schritte, um die Einstellungen für Area2 und Area3 zu konfigurieren.

Wenn Sie Git für die Versionskontrolle verwenden. Es gibt keine Möglichkeit, den Build durch die Bereichsordner im Git-Repository auszulösen. Sie müssen die drei Bereiche trennen und sie in drei Git-Repositories einfügen.

Verwandte Themen