Wir migrieren von CruiseControl.NET zu Jenkins, nur um mit einem Partner synchron zu sein, damit wir nicht zwei verschiedene CI-Skripte haben. Wir versuchen, Jenkins so einzurichten, dass es etwas Ähnliches tut wie CruiseControl, bei dem ein zentraler Server Projekte (Jobs in Jenkins) auf entfernten Build-Maschinen aufruft.
Wir haben mehrere Build-Maschinen zu einem einzigen Projekt zugeordnet, so dass, wenn wir das Projekt von der zentralen CI-Server bauen würde es die Projekte auf den Remote-CI-Servern aufrufen. Die entfernten CI-Server würden die Version vom zentralen CI-Server-Projekt abrufen.
In CruiseCruise Control haben wir ein Projekt eingerichtet, das eine forceBuild
zu den entfernten Projekten. Die Projekte auf den Build-Maschinen verwendeten eine remoteProjectLabeller
um die Versionsnummer abzurufen, so dass sie immer auf dem gleichen Stand sind.
So rufen Sie die Master-Build-Nummer ab:
<labeller type="remoteProjectLabeller">
<project>MainProject</project>
<serverUri>tcp://central-server:21234/CruiseManager.rem</serverUri>
</labeller>
Um die entfernten Projekte aufzurufen:
<forcebuild>
<project>RemoteBuildMachineA</project>
<serverUri>tcp://remote-server:21234/CruiseManager.rem</serverUri>
<integrationStatus>Success</integrationStatus>
</forcebuild>
Bisher habe ich in Jenkins einen sekundären Server als Slave mit dem Java-Web-Start eingerichtet, aber ich weiß nicht, wie ich den Master-Jenkins haben würde, um die Projekte auf den Slaves einzurichten.
Kann ich Jenkins so einrichten, dass es Projekte (Jobs) auf Slaves aufruft?
Kann ich die Slaves dazu bringen, die Versionsnummer vom Master zu beziehen?
EDIT -
Lassen Sie mich noch einige Informationen hinzufügen.
- Der Master- und der Remote-Build-Maschine-Slave laufen alle unter Windows.
- Wir haben den zentralen Master CruiseControl die Remote-Projekte zur gleichen Zeit starten lassen, so dass sie gleichzeitig liefen, und würden gerne dasselbe mit Jenkins haben, wenn möglich.