W którym momencie powinieneś przejść na wersję build?

17

Jedną z praktyk określonych w Continuous Delivery Jez Humble jest to, że powinieneś zbudować jeden pakiet, a następnie wypuścić go w każdym środowisku, w którym wdrażasz, aby wdrożenie i artefakty były wielokrotnie testowane przed przejściem do produkcji.

W pełni popieram ten pomysł.

Z drugiej strony kompilacje w trybie debugowania, które dają ślady stosu z numerami linii, są niezwykle przydatne w środowiskach testowych, podobnie jak możliwość zdalnego debugowania. Ale chcesz wysłać kompilację wersji do produkcji.

Tak więc, dla osób przestrzegających pierwszej zasady, w którym momencie przełączasz się z wersji debugowania na wersje kompilacji?

Czy to jest przed pierwszym wdrożeniem w środowisku testowym, czy warto ponieść koszty utraty trybu debugowania, aby upewnić się, że testujesz kandydata do wydania wcześniej? A może budujesz ponownie na jakimś etapie procesu promocji, zakładając, że zaufasz procesowi kompilacji nad oprogramowaniem? A może po prostu wkręcasz to wszystko i wdrażasz wersje debugowania na produkcji?

Uwaga: Wiem, że tak naprawdę nie dotyczy to języków interpretowanych, ponieważ zwykle można przełączyć przełącznik w konfiguracji zamiast robić to w czasie kompilacji.

pdr
źródło
Dziękuję wszystkim za odpowiedzi. Dobre jedzenie do namysłu. Ale myślę, że „Punkt zmiany kompilacji zależy głównie od kosztów reprodukcji błędów”, dostaniesz kleszcza do wyczyszczenia mojego procesu myślenia.
pdr

Odpowiedzi:

5

Tak więc, dla osób przestrzegających pierwszej zasady, w którym momencie przełączasz się z wersji debugowania na wersje kompilacji?

Przełączamy się wcześnie, gdy kod źródłowy otrzymuje numer wersji i zostaje wepchnięty do kolejki kompilacji Debiana. Jesteśmy w szczęśliwej sytuacji, że produkujemy oprogramowanie naukowe z dobrze określonymi danymi wejściowymi i wyjściowymi oraz niewielką interakcją systemu, więc koszt odtworzenia sytuacji błędu jest dość niski.

To także moja ogólna odpowiedź: cel zmiany kompilacji zależy głównie od kosztów reprodukcji błędów. Jeśli są one bardzo wysokie, wysyłam nawet wersje debugowania, aby przetestować klientów. Chociaż niesie to ze sobą ryzyko niepowodzenia kompilacji dla wersji produkcyjnej, może to być tańsze niż spędzanie tygodni na reprodukcji przypadków testowych.

Thiton
źródło
3

Tak więc, dla osób przestrzegających pierwszej zasady, w którym momencie przełączasz się z wersji debugowania na wersje kompilacji?

Gdy tylko przejdziemy do kontroli jakości, przełączamy się na wydanie wersji. Ale kiedy tylko budujemy kompilację wydania, nasz proces kompilacji buduje również debugowaną wersję bibliotek dll. To pozwala nam szybko upuścić pliki debugowania do środowiska kontroli jakości i uzyskać dodatkowe informacje, jeśli to konieczne.

Kopie zapasowe dll wersji i debugowania są archiwizowane i przechowywane przez kilka lat.

Armitage
źródło
2

W naszym środowisku kod jest wdrażany w wielu witrynach. W związku z tym do każdego wystąpienia wdrożenia należy zastosować inny kontekst. Zwykle umieszczamy go w kluczowych „mniej ryzykownych” miejscach i widzimy doświadczenie.

To wdrożenie wciąż jest w fazie produkcji, dlatego nie jest to tryb „debugowania”. Ale zakłada również, że testowanie przebiega dobrze.

Oczywiście przy wyłączonym trybie debugowania szybkie debugowanie kodu (na stronie) może być trudne. Ale jeśli wydanie się nie powiedzie, produkcja powróci do wydania wycofanego.

Staramy się jednak zachować lub stworzyć identyczne środowisko, które może odtworzyć takie środowisko w celu ponownego przetestowania. (Wiem, że nie zawsze jest to trywialne), ale czasem potrzebujemy tylko odtworzenia transakcji / danych wejściowych.

Chodzi o to, o ile pokusa, wydanie w trybie debugowania nie powinno być w produkcji. Chociaż nie powiem, że to reguła.

Inną kwestią jest to, że wydanie jest nadal nazywane wersją próbną, dopóki nie zostanie ustanowione (działając przez dłuższy czas) inne przesłanki jeszcze go nie akceptują.

Istnieje kilka innych praktyk zapewniających, że sam proces kompilacji nie będzie całkowicie wadliwy. Zobacz: Proste sposoby poprawy jakości wydania w środowisku RAD

Dipan Mehta
źródło
2

Mamy skonfigurowane nasze maszyny programistyczne do budowania kompilacji debugowania. Ale gdy kod dewelopera zatwierdza, pakiet wdrażania jest tworzony w naszym środowisku ciągłej integracji (TeamCity) i jest przygotowywany do wydania. Dlatego za każdym razem, gdy decydujemy się na wdrożenie w ramach kontroli jakości, bierzemy najnowszy pakiet wdrożeniowy z serwera CI i wypychamy go, więc jest on zawsze wydawany, chyba że znajduje się na komputerze deweloperskim.

BTW, w niektórych językach, nawet podczas budowania do wydania, nadal możesz tworzyć symbole debugowania. Na przykład w .NET istnieje ustawienie „tylko pdb”, które pozwala na optymalizację, ale nadal tworzy pliki debugowania. Oczywiście debugowanie w stosunku do wersji jest trudniejsze, ponieważ nie jest to odpowiednik między wierszami, ale nadal może być pomocne w szczypaniu.

RationalGeek
źródło