2008-09-18 14 views
7

Używamy stosu CruiseControl.Net/NAnt/Subversion dla CI. Wykonanie nowego zamówienia na każdą kompilację jest zbyt czasochłonne, więc obecnie robimy tylko aktualizację kopii roboczej. Pozostaje jednak możliwość, że osierocone pliki mogą pozostać w kopii roboczej, po usunięciu z kontroli źródła. Próbowaliśmy użyć zadania NAnt delete, aby usunąć wszystkie pliki źródłowe kodu przed aktualizacją, ale może to spowodować uszkodzenie kopii roboczej. Czy ktoś wie, jak szybko uruchomić kompilację na czystej i aktualnej kopii roboczej? EDYCJA: Jesteśmy na SVN 1.3.2Czyste kompilacje w ciągłej integracji

Odpowiedz

5

Po prostu "zaktualizuj", SVN usunie wszystkie pliki, które zostały usunięte w formancie źródłowym. Jednak pliki utworzone podczas procesu kompilacji mogą nadal tam być i mogą zakłócać działanie nowej wersji. Nie jestem pewien, czy SVN ma polecenie, aby je usunąć, ale domyślam się, że można to zrobić za pomocą małego skryptu, SVN zdecydowanie może powiedzieć, które pliki są pod kontrolą źródła, a które nie.

1

Jeśli w kopii roboczej, która wykonała aktualizację svn, pozostały osierocone pliki, to istnieje błąd w wersji Subversion.

1

Możesz wykonać codzienną pełną kompilację i pozostawić kompilację przy odprawie w niezmienionej postaci. Ponadto, w przypadku wersji wdrażania, prawdopodobnie dobrym pomysłem jest zawsze używać czystej pełnej kompilacji.

1

Jedyny sposób, jaki mogę wymyślić, to posiadanie dwóch kopii na serwerze kompilacji. Najpierw aktualizujesz w pierwszej lokalizacji. Usuwasz drugą lokalizację. Kopiuj od pierwszego do drugiego, a następnie wbuduj w drugą lokalizację. W ten sposób zawsze zaczynasz od czystej kompilacji.

Być może zechcesz sprawdzić, dlaczego wykonanie Twojego zlecenia trwa tak długo. Użyłem tego samego stosu buildserver i nigdy nie miałem z tym problemów. Subversion zwykle zajmuje mniej czasu niż sama kompilacja.

3

Mieliśmy podobny problem z naszą implementacją CC.

Nasze rozwiązanie ... Stworzyliśmy już nocną kompilację 3:00, która oprócz testów bazowych wykonywała dłuższe testy integracyjne. Po prostu postanowiliśmy, że 3:00 AM zbuduje w pełni czystą kompozycję na świeżym drzewie. Jak to było w środku nocy, rzadko miało to wpływ na każdego. Wszystkie inne "normalne" meldunki prowadziły przyrostowe kompilacje.

Powiązane problemy