Mein Arbeitsplatz benutzt Hudson für seine täglichen Builds, mit mehreren Build-Slaves (ein Linux, ein Windows, ein Mac), die unsere komplette Codebase von svn auschecken und unsere App jeden Tag um Mitternacht bauen. Das alles funktioniert ziemlich gut.Wie kann ich sicherstellen, dass alle meine Hudson Build Slaves die gleiche SVN Revision für den täglichen Build auschecken?
Es gibt ein gelegentliches Problem, das jedoch passiert ... manchmal arbeitet ein Entwickler zu spät und checkt kurz nach Mitternacht eine Änderung an svn ein. Wenn dies auftritt, ist es möglich, dass einige der täglichen Build-Slaves ihre 'svn-Prüfung' ausführen, bevor die svn-Festschreibung verarbeitet wird, während andere Build-Slaves dies tun, nachdem die Festschreibung verarbeitet wurde. Wenn dies geschieht, haben wir verschiedene Revisionen, die auf verschiedenen Plattformen erstellt wurden, z. Der Mac-Build könnte ein Build der SVN-Revision 5555 sein, während der Windows-Build ein Build der SVN-Revision 5556 ist. Das ist schlecht, da wir wollen, dass alle täglichen Builds für einen bestimmten Tag auf derselben Codebasis basieren.
Ich denke, eine Möglichkeit, dies zu vermeiden, ist es, Entwicklern zu verbieten, Svn zwischen 11.30 Uhr und 12.30 Uhr zu verpflichten, aber ich würde eine elegantere Lösung bevorzugen, die nicht auf das Verhalten der Entwickler angewiesen ist. Ist dort eines? Insbesondere, wenn es eine Möglichkeit gibt, Hudson zu sagen, dass er die Revision des Codes, die um Mitternacht des aktuellen Tages aktuell war (z. B. "svn co -r {" das-aktuelle-Datum "}"), auschecken sollte HEAD, ich denke, das könnte den Trick bringen.
Gibt es einen einfachen Weg, um dieses Problem zu lösen?
Starten Sie den Build um 1 Uhr? :) –
lol, das war ein guter. Ich hoffe, sie haben kein Problem, so dass die Entwickler bis 13 Uhr oder später da sind. ;) –