Moje miejsce pracy używa Hudsona do codziennych kompilacji, z kilkoma zbudowanymi niewolnikami (jeden Linux, jeden Windows, jeden Mac) sprawdzając nasz pełny kod z svn i budując naszą aplikację o północy każdego dnia. To wszystko działa całkiem dobrze.Jak mogę się upewnić, że wszyscy moi hudsonowie budują niewolników sprawdzają tę samą wersję svn dla codziennej wersji?
Występuje sporadyczny problem, który jednak się zdarza ... czasami programista będzie pracował późno i sprawdzi zmianę svn tuż po północy. Kiedy to nastąpi, możliwe jest, że niektórzy z codziennych niewolników budujących wykonają swoje "svn checkout" zanim svn commit zostanie przetworzony, podczas gdy inne build slave zrobi to po przetworzeniu commit. Kiedy tak się stanie, kończymy na różnych wersjach zbudowanych na różnych platformach ... np. kompilacja Maca może mieć wersję SVN 5555, podczas gdy kompilacja Windowsa kończy się budową wersji SVN 5556. To źle, ponieważ chcemy, aby wszystkie codzienne kompilacje dla danego dnia były oparte na tej samej bazie kodu.
Przypuszczam, że jednym ze sposobów uniknięcia tego jest zakazanie programistom zatwierdzania svn między 23:30 a 12:30, ale wolę bardziej eleganckie rozwiązanie, które nie zależy od zachowania programistów. Czy jest jeden? W szczególności, jeśli istnieje sposób, aby powiedzieć hudsonowi, aby sprawdził wersję kodu, która była aktualna o północy bieżącego dnia (np. "Svn co -r {" the-current-date "}") zamiast sprawdzać HEAD, myślę, że to może załatwić sprawę.
Czy istnieje wspólny/łatwy sposób na rozwiązanie tego problemu?
Rozpocznij budowę o 1 rano? :) –
lol, to było dobre. Mam nadzieję, że nie mają problemu, więc deweloperzy są tam do godziny 13, a nawet później. ;) –