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:
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.
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.
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.
Tags und Links cruisecontrol.net