2013-01-23 12 views
7

W środowisku, w którym wiele buildów (pakiety kandydatów do wydania) może być tworzonych codziennie, ale tylko jeden w miesiącu zostaje awansowany do produkcji, myślę, że przechowywanie każdej wersji w Git byłoby marnotrawstwem, ale powinna istnieć krótkoterminowa lokalizacja, którą tworzą ostatnie kompilacje są publikowane.Czy Git powinien być używany do przechowywania ciągłych kompilacji integracyjnych?

Obecnie publikuję je w udostępnionym katalogu. Widzę IVY używane do tego rodzaju publikacji binarnych w przeszłości. Git wydaje się być przesadą, ponieważ nadejdzie z powodu tego, że nigdy nie usuwa niczego.

Czy istnieje uzgodniony, wystandaryzowany sposób zarządzania/publikowania tych przejściowych artefaktów kompilacji?

+4

Dlaczego przechowujesz artefakt? Budowle można odtworzyć. –

+0

(Mam na myśli w git, w każdym razie.) Czy większość serwerów CI tak czy inaczej zachowuje kompilacje przez konfigurowalny czas?) –

+0

Budowle można odtworzyć, ale czasami budują środowiska. Unles, w których cały łańcuch narzędzi jest objęty kontrolą wersji, nie ma pewności, że po upływie długiego czasu można zbudować ten sam układ binarny. Ponadto niemożliwe jest zbudowanie dokładnie tego samego binarnego (osadzone znaczniki czasu powodują różne sumy kontrolne plików). Utrudnia to osobom trzecim zaufanie do oprogramowania lub jego certyfikację, o ile nie zbuduje go ze źródła. –

Odpowiedz

10

Nie będę przechowywać artefaktów budowania w git, ale zamiast tego popatrzę na udostępnianie artefaktów budowania z serwera Continuos Integration (CI) lub dedykowanego repozytorium artefaktów, takiego jak artifactory lub nexus. Ogólnie uważam, że najlepiej jest unikać dużych plików binarnych we wszystkich SCM, ponieważ nie możesz ich zmienić ani tworzyć przyrostowych aktualizacji, więc szybko zobaczysz, że twoje repozytorium git szybko rośnie, ponieważ przechowuje pełną wersję binarną przy każdej zmianie.

Większość narzędzi do ciągłej integracji (takich jak Jenkins) będzie mogła zarchiwizować ostatnie artefakty X lub wszystkie artefakty kompilacji utworzone w ciągu ostatniego miesiąca. Mają też wtyczki, które pomagają w obsłudze i automatyzacji procesu promowania buildów, które uważasz za pomocne (np. Jenkins build promotion).

Korzystając repozytorium artefaktów lub serwer CI zarządzać artefakty kompilacji można również zwykle dostęp artefakty poprzez API, który przychodzi w bardzo przydatny, gdy chcemy zautomatyzować procesy wdrażania na przykład można wykonywać połączenia, takie jak „getLastSuccesfullBuild” i "getLastPromotedBuild()" itp.

+2

+1 Kierownicy repozytoriów, tacy jak Nexus, Artifactory lub Archiva, mają na celu rozwiązanie tego problemu. Sprawdź ich funkcje. Korzystamy z usług Nexus Professional, co pozwala nam "przesuwać" nasze wydania i tworzyć przepływy pracy certyfikatów, w których DEV tworzy artefakty kompilacji, które są następnie zatwierdzane przez Test i kontrolę jakości przed trafieniem do repozytorium produkcji. –

Powiązane problemy