2010-11-29 14 views
0

Ich arbeite mit etwa 30 Projekten in Hudson. Im Moment bauen sie alle automatisch auf ein Commit. Gibt es eine Möglichkeit, alle Projekte zwischen Trunk und einem Zweig zu wechseln, während die Fähigkeit beibehalten wird, auf einem Commit aufzubauen?Build von Zweig in Hudson

Ich habe zwar die Builds parametrisiert, um die Verzweigung zu spezifizieren, aber das bricht die automatischen Builds.

Antwort

1

Nun, Sie ein paar Möglichkeiten:

1) Sie parametrisierte verwenden könnte Builds: Sie haben noch kann die automatische baut, sondern eine der Optionen wird default (entweder Stamm oder Zweig wird Standard)

2) getrennt haben baut für jedes Projekt, für Baum- und Verzweigungs

3) (das ist, wie ich es bei uns einrichten) zwei Build-Server: ein für die Stamm-Projekte und eine speziell für Filialen.

+0

Ich schaue auf Ihre dritte Option. # 1 gibt mir immer noch Probleme und # 2 läuft auf ein Problem mit dem Build-Trigger "Build, wenn Abhängigkeiten aufgebaut sind". # 3 hält alles schön und getrennt. –

+0

Option # 3 ist, was wir gingen. –

+0

Großartig! Ich hoffe, es klappt gut – Sagar

1

Ich bin nicht ganz sicher, wie Sie den "Schalter" verwenden möchten, aber ich denke, es hängt davon ab, wie Sie Zweige verwenden. (In unserem Setup sind Branchen, die kontinuierliche Builds haben, eher lang andauernde Projekte oder Releases. Daher richten wir Builds für jeden Zweig ein, die von den Stamm-Builds getrennt sind. Wenn Ihre Niederlassungen langlebig sind, würde ich diesen Ansatz empfehlen.)

Es gibt mehrere Möglichkeiten, dies zu nähern:

  1. ein Skript schreiben, um neu zu konfigurieren (oder kopieren) die Arbeitsplätze durch die Hudson Remote API. Wenn Sie sich http://your-hudson/job/JOB_NAME/api ansehen, können Sie weitere Anweisungen zum Übermitteln einer neuen Jobkonfiguration sehen. Das ist ein automatisierter Weg, um die scm/location/remote Eigenschaft zu bearbeiten.

  2. Verwenden Sie einen Post-Commit-Hook in Ihrem scm, um den parametrisierten Build auszuführen. A post on the Hudson Labs blog beschreibt, wie Sie einen Subversion-Post-Commit-Hook einrichten (um Commits statt Polling zu pushen). Sie müssen ein wenig mehr in Ihrem Skript arbeiten, um zu bestimmen, was Sie erstellen sollen. Diese Lösung scheint mir ziemlich pingelig zu sein.

1

+1 oder sagar: Auf den ersten Gedanken hätte ich die erste Option als Lösung für Bobnix Problem vorgeschlagen.

Allerdings ist die Frage noch ein paar Mal, ich bin mir nicht sicher, was er eigentlich erreichen möchte. Wenn er Builds entweder vom Zweig oder vom Stamm aus auslösen möchte, dann könnte er mit dem Post-Commit-Haken besser dran sein. +1 für Dave B. (Lösung 2)

Wenn er nur für einige Zeit die Äste anstatt des Stammes bauen möchte, dann wäre Daves Lösung Nummer 1 die beste Lösung.

Es gibt eine andere Option, die Bobnix eigentlich für eine gewisse Zeit benötigt, um den Zweig aufzubauen, aber die Bemühungen um einen neuen Job erspart. Die Lösung bestünde darin, den bestehenden Job neu zu konfigurieren, bis es Zeit ist, zu der Leitung zurückzukehren. Wenn es wenig Entwicklung gibt, wenn es eine Entwicklung auf dem Zweig gibt, dann könnte dies ein gültiger Gedankengang sein. Wie auch immer, seit Kopieren ist so einfach Sie sollten besser dran sein, nur um Ihre Trunk-Job kopieren und passen Sie die SCM zu verzweigen. Wenn Sie Ihre Verzweigung nicht mehr benötigen, löschen Sie sie einfach.

+0

Die Kopieridee wäre am einfachsten, aber ich frage mich, ob es für 30 Projekte funktionieren würde. Der einzige Grund, warum ich zwei getrennte Hudsons, einen für Filialen und einen für HEAD, eingerichtet habe, ist, dass wir 93 Projekte haben. – Sagar

+0

Ich war mir nicht sicher, ob Bobnix alle Jobs gleichzeitig wechseln wollte. Wenn ja, kann er die Jobs im Dateisystem kopieren (config.xml des Jobs ist genug) und einen guten skriptfähigen Editor (z. B. sed) darüber laufen lassen. Lade die Konfiguration in Hudson neu (oder starte sie einfach neu) und die neuen Jobs sind da und zeigen auf den Zweig. –

+0

Wir mussten alle 30 Projekte verschieben. Ich ging mit Sagers dritter Option, weil wir einen Build-Trigger haben, wenn eine Abhängigkeit erstellt wird. Wenn wir zwei Projekte haben, die das gleiche Artefakt (Stamm und Zweig) bauen, dann würden wir genug miteinander ketten und wir würden mit Rassenkonditionen enden. –

Verwandte Themen