Kann ein master-jenkins-run-jobs auf remote-jenkins?
Wir Wandern aus CruiseControl.NET zu Jenkins, einfach nur synchron mit einem partner, so haben wir nicht zwei verschiedene CI-Skripte. Wir versuchen, setup Jenkins, etwas ähnliches zu tun, was wir hatten, CruiseControl, war eine zentrale server-invoke-Projekte (jobs in jenkins) auf remote-Maschinen bauen.
Haben wir mehrere bauen Maschinen verbunden, um ein einzelnes Projekt, so dass, wenn wir bauen das Projekt von der zentralen CI-server aufrufen würden die Projekte auf der Fernbedienung, CI-Servern. Die remote-CI-Servern ziehen würde, die version von der zentralen CI-server-Projekt.
In CruiseCruise Steuern wir ein setup-Projekt, dass tun würde, ein forceBuild
auf dem remote-Projekte. Die Projekte, die auf dem Bau benutzten Maschinen eine remoteProjectLabeller
zum abrufen der Versionsnummer, so waren Sie immer synchron.
Abrufen der master-build-Nummer:
<labeller type="remoteProjectLabeller">
<project>MainProject</project>
<serverUri>tcp://central-server:21234/CruiseManager.rem</serverUri>
</labeller>
Zum aufrufen des remote-Projekte:
<forcebuild>
<project>RemoteBuildMachineA</project>
<serverUri>tcp://remote-server:21234/CruiseManager.rem</serverUri>
<integrationStatus>Success</integrationStatus>
</forcebuild>
Bisher in jenkins ich habe setup ein sekundärer server als slave mit dem java web start, aber ich weiß nicht, wie ich hätte den master jenkins aufrufen des setup-Projekte die auf dem Sklaven.
Kann ich setup Jenkins aufrufen Projekte (jobs) auf die Sklaven?
Kann ich die Sklaven ziehen Sie die Versionsnummer aus der master?
BEARBEITEN -
Lassen Sie mich hinzufügen, ein paar mehr Infos.
- Der master-und remote-build-Maschine Sklaven sind alle Windows ausgeführt werden.
- Hatten wir die zentrale master-CruiseControl kick-off-remote-Projekte zur gleichen Zeit, so sprangen Sie gleichzeitig auf und möchte die gleiche Sache mit jenkins, wenn möglich.
InformationsquelleAutor Andy Arismendi | 2012-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jenkins hat das Konzept der build-agents, das könnte vielleicht passen dein Szenario besser - es gibt einen master, der löst das bauen und Sklaven, die Sie ausführen. Ein bauen kann, dann beschränkt sich auf einige Kategorien von Sklaven, die nur (z.B. wenn es hängt davon ab, eine bestimmte software, nicht auf alle Agenten). Alle Daten werden zentral durch den master, die ich glaube, ist, was Sie versuchen zu erreichen.
InformationsquelleAutor skolima
In Jenkins ist es nicht möglich, trigger ein zu bauen, die auf einem slave, d.h. wo ein build ausgeführt wird, nicht gesteuert durch die derjenige, der es auslöst. Es wird gesteuert durch die Einstellungen der Aufgabe selbst. Jeder job hat eine Einstellung namens "Beschränken, wo dieser Auftrag ausgeführt werden kann".
In Ihrem Fall würden Sie wahrscheinlich haben zwei Aufträge: A und B. A wäre beschränkt auf "master" und B konfiguriert werden, um auf "slavename". Dann alles, was übrig ist zu tun ist, für Ein auslösen B.
Aber Sie hatte weitere Einschränkungen: Sie wollen A und B überprüfen Sie heraus die gleiche version von version control und Sie wollen A und B laufen parallel. Es gibt viele Möglichkeiten, um dies zu erreichen, aber der einfachste ist wahrscheinlich, zu definieren, eine multi-Konfiguration-job.
Gibt es keine Möglichkeit, einen bestehenden free-style-job in ein multi-Konfigurations-job ist, so haben Sie, um einen neuen job.
Wenn der Auftrag läuft, es läuft auf dem master und dem slave. Jenkins stellt sicher, dass Sie bauen, aus der gleichen Quelle-version.
Ich setup eine Testumgebung mit drei VMs, a, b und c aus. Einer ist der master, b und c sind die Sklaven. Ich erstellt ein multi-Konfigurations-job und unter configuration-matrix, die ich nur wählen Sie Knoten b, weil ich es nur wollen, auf ausführen, VM. Aber wenn ich das build läuft und es vom Meister. Warum ist das so? Ich gehe davon aus, dass es, um Sie auf den Knoten, den ich ausgewählt habe.
sind Sie sicher? Gehen Sie zu dem job, wählen Sie die Letzte build. Es wird sich zeigen, kleine Bälle, entsprechend Ihrem Kind baut (vielleicht nur eine, wenn Sie nur ein Kind haben zu bauen, dann wird er sagen, 'default' daneben). Die Kugeln werden blau, rot oder Grau - je nach status. Klicken Sie auf eine der nicht-grauen Kugeln. Das ist Ihr Kind build-status. Das Kind soll laufen, auf dem slave -
b
. Top-level-job, auf der anderen Seite, kann es überall laufen (es sei denn, gebunden zu einem Knoten mit einer Matrix Binden Eltern plgin).Andy, Sie sind wahrscheinlich immer verwirrt von den "Eltern" zu bauen. Wenn ein multi-Konfigurations Auftrag ausgeführt wird, gibt es eine "Eltern" bauen und dann einen build pro sub-Konfiguration. Der übergeordnete build am Leben bleibt, bis alle sub-Konfiguration builds abgeschlossen haben. Der übergeordnete build nur checkt den source-code, aber es nicht ausführen jedem build-Schritte, so dass Sie effektiv zu ignorieren. Der übergeordnete build wird auf einen zufällig ausgewählten Knoten, aber es gibt ein plugin, das es möglich macht, binden Sie es zu einem Knoten, wie explaind oben malenkiy_scot. Regel nicht Sie sich darum kümmern müssen.
Danke Jungs dankbar für die Hilfe. Ich landete einen anderen Ansatz, also legte ich, dass eine Antwort auf die Frage.
InformationsquelleAutor sti
Vom /jenkins/computer-url, Sie können hinzufügen, entfernen und neu konfiguriert "Knoten", die entweder lokal oder remote "build-agents".
Die Jobs können dann eingeschränkt werden, um die Ausführung auf bestimmten build-agents, oder Folgen verschiedenen Regeln wählen Sie die entsprechende build-agent aus den verfügbaren Agenten.
InformationsquelleAutor Edwin Buck
Ich dachte über Jenkins zu viel wie CruiseControl, wo der job definiert ist, auf der remote-Maschine. So in Jenkins die remote-Projekte festgelegt, die auf der master-und der Delegierten zu einer entfernten Maschine über einen Agenten.
Verwendet habe ich das Java-Web-Start-agent als windows-Dienst installiert auf dem remote-Maschinen. Konkrete jobs, die auf bestimmte remote-Rechner, die ich definiert jeder entfernte Knoten mit einer eindeutigen Bezeichnung in seinem slave-Konfiguration. Binden bestimmte Aufgaben zu bestimmten Sklaven ich der slave-label in jeder job-Konfiguration ("Einschränken, wo dieses Projekt ausgeführt werden kann").
Auslösen, die jobs mit einem einzigen master-Arbeit, die ich schuf eine free style job, der nur auf "andere Build-Projekte" und ein Komma getrennte Liste oder Projekt-Namen. Dieser job baut die downstream-jobs parallel.
Ich bin noch auf der Suche nach einem Weg, senden Sie eine master-build-Nummer an die nachgelagerten Arbeitsplätze zu halten Sie in sync immer. (Dies wird verwendet, um die version DLLs und so.)
InformationsquelleAutor Andy Arismendi