Wie konfiguriere ich CruiseControl.net, um co-abhängige Projekte zu erstellen?

8

Für Beispiel:

Ich möchte Projekt A erstellen. Projekt A hängt von Projekt B und Projekt C ab.

Bearbeiten: Jedes Projekt hat seinen eigenen Stamm in SVN: [Repository] / ProjektA / Stamm [Repository] / ProjektB / Stamm [Repository] / ProjektC / Stamm

Meine Frage hat ein paar Teile:

  1. Was ist der Ansatz / die Konfiguration für CCNET, um diesen "abhängigen" Build zu erreichen?
  2. Wie sollte ich die Projekte so konfigurieren, dass Projekt B oder C erstellt wird, und dann einen Build von Projekt A auslöst?
  3. Wenn jedes Projekt Abhängigkeiten erhält, was ist der skalierbare Ansatz / die skalierbare Konfiguration, um den Build-Prozess zu skalieren?

Ich bin ein Neuling für CCNET. Wenn es also einige zugrundeliegende Konzepte gibt, gehe bitte nicht davon aus, dass ich sie kenne. Details sind mein Freund :-D

Bearbeiten: Ich verwende SVN als meinen Quellcodeanbieter.

    
Achilles 05.11.2009, 20:21
quelle

2 Antworten

10

Sie können einen Projektauslöser verwenden, um ProjectA zu starten, wenn ProjectB erfolgreich erstellt wurde :

%Vor%

Dies fragt das Build-Ergebnis für ProjectB alle 60 Sekunden ab, und wenn ein neuer erfolgreicher Build vorliegt, wird ProjectA ausgelöst. Standardmäßig wird nach dem Projekt auf demselben CCNET-Server gesucht, Sie können jedoch auf ein anderes mit dem Attribut serverUri verweisen. Sie können einen weiteren Trigger für ProjectA hinzufügen, wenn Sie auch möchten, dass er erstellt wird, wenn das Subversion-Repository aktualisiert wird.

Wenn Sie die Builds auf demselben Server ausführen, können Sie sie in die gleiche Warteschlange stellen, wenn sie sich gegenseitig stören könnten. Andernfalls könnten beide gleichzeitig erstellt werden.

    
GraemeF 05.11.2009, 20:36
quelle
3

Ich habe ein Build-System von etwa 20 Lösungen und vielleicht 100 Projekten eingerichtet, die NAnt-Skripte mit CCNet als Build-Engine verwenden. Um Abhängigkeiten zwischen den Lösungen zu handhaben, habe ich das Java-basierte Tool Ivy verwendet.

Ivy verwendet binäre Abhängigkeiten, bei denen die Abhängigkeit mit Versionsinformationen qualifiziert ist. Die Ausgabe einer Kompilation wird in einem binären Repository gespeichert, d. H. Im Dateisystem oder sogar in Subversion. Beim Kompilieren werden die binären Abhängigkeiten in das Dateisystem heruntergeladen.

Dieser Ansatz eignet sich gut für Projekte, bei denen relativ lose gekoppelte Module (dargestellt durch eine MS-Lösung) relativ unabhängig voneinander entwickelt werden. Für ein Setup wie das Ihre, wo Sie für jedes Projekt / Lösung einen separaten Stamm haben, müssen die Projekte / Lösungen wirklich lose gekoppelt sein, sonst werden Sie eine Menge Tagging und Verzweigungen machen, wenn das System größer wird.

Wenn Sie eine engere Kopplung zwischen Ihren Projekten benötigen, würde ich empfehlen, sie in den gleichen Stamm zu verschieben.

Hinweis: Ivy muss als ausführbare Befehlszeile aufgerufen werden, und Sie erhalten nicht die nette Java-Ant-Integration.

    
Christoffer Soop 05.11.2009 20:54
quelle

Tags und Links