Co to jest repozytorium artefaktów? Jeśli jest to tylko miejsce do przechowywania plików, czy nie mogę po prostu użyć systemu kontroli źródła?
Odpowiedź
W trakcie podczas rozwoju generujesz sporo różnych artefaktów. Mogą to być:
- Kod źródłowy
- Skompilowana aplikacja
- Pakiet do wdrożenia
- Dokumentacja
i potencjalnie także inne
Chociaż do przechowywania ich wszystkich można użyć systemu kontroli źródła, jest on zwykle bardzo nieefektywny, ponieważ systemy kontroli źródła są zwykle zaprojektowane do obsługi tekstu plików, a nie plików binarnych. Możesz ich użyć jako prostego mechanizmu przechowywania, jeśli większość twoich wydań jest oparta na tekście i nie musisz przechowywać wielu danych binarnych.
Jednak repozytoria artefaktów są przeznaczone do przechowywania wszelkiego rodzaju plików, w tym plików binarnych. Obejmuje to wszystko, od spakowanych kodów źródłowych, przez tworzenie wyników, po rzeczy takie jak obrazy dockera. Ponadto zwykle nie tylko przechowują te artefakty, ale także pomagają w zarządzaniu nimi za pomocą różnych dodatkowych funkcji, na przykład:
- Obsługa wersji: prawidłowo przechowują niektóre metadane, na przykład kiedy każdy artefakt został zbudowany, jaka jest ich wersja liczba to, przechowuj ich skróty itp.
- Przechowywanie: upewnij się, że przechowujesz tylko ważne artefakty i automatycznie usuwasz te, które są tylko migawkami / nie są już potrzebne itp. w oparciu o różne kryteria, które możesz skonfigurować
- Kontrola dostępu: określ, kto może publikować i kto może pobierać różne artefakty.
- Promocja: możliwość promowania artefaktów. Na przykład możesz mieć artefakty migawek z krótkim okresem przechowywania na serwerze w pobliżu twoich programistów i oddzielne repozytorium w pobliżu serwerów na żywo, w którym pojawiają się tylko artefakty, które zostały uznane za możliwe do wdrożenia. Obejmuje to również obsługę różnych kanałów wersji i przenoszenie artefaktów między nimi (np. Promowanie określonej wersji z wersji beta do stabilnej).
- Działa jako natywne repozytorium artefaktów. Oznacza to, że możesz go używać jako głównego repozytorium dla mavena, rubygemów, dockera itp. Może to również obejmować buforowanie artefaktów z oficjalnych repozytoriów.
Komentarze
- Może warto dodać funkcję ' channel ' zamiast obsługi Versionning, mając możliwość maszyna kierująca na najnowszą wersję w kanale " opracuj " i produkuj maszynę kierującą się na określoną wersję w kanale " stabilny ".
- @ Pierre.Vriens dodał kilka drobnych komentarzy, ale być może można je również rozwiązać w osobnym pytaniu
- merci, ale na wszelki wypadek tutaj to Twoja szansa na dalsze odniesienie się do mojego dodatkowego komentarza …
- Czy ma sens śledzić również pliki konfiguracyjne lub urządzenia w tego rodzaju repozytoriach?
Odpowiedź
Istnieją menedżery repozytoriów i uniwersalne menedżery repozytoriów pakietów (UPM).
UPM mogą przechowywać wszystkie artefakty kompilacji dla Jenkinsa, teamcity itp. i ogólnie mogą również działać jako zarządcy repozytoriów dla wielu różnych typów artefaktów binarnych Maven, npm, NuGet i nie tylko.
To byłyby narzędzia takie jak Jfrog Artifactory , Inedo ProGet , i Sonatype Nexus .
Całkiem przyzwoite porównanie jest tutaj: https://binary-repositories-comparison.github.io/