Co to jest artefakt?

53

Istnieje sporo pytań i odpowiedzi, które wspominają o „ artefaktach ”.

Nie zdziwiłbym się, gdyby był w jakiś sposób związany z .

Moje pytania :

  • Czym właściwie jest „artefakt” (w kontekście DevOps)?
  • Dlaczego wykorzystywane są artefakty?
Pierre.Vriens
źródło
Całkiem kilka interesujących odpowiedzi na to, co uważam za dość podstawowe pytanie. Zabawne, że wszystkie przypominają mi podobną koncepcję w starych, dobrych środowiskach komputerów mainframe (gdzie są moje korzenie DevOps ... i skąd wydaje się, że tak wiele koncepcji DevOps pochodzi).
Pierre.Vriens

Odpowiedzi:

66

Artifactory to produkt firmy JFrog, który służy jako menedżer repozytorium binarnego . To powiedziawszy bardzo często używa się artefaktów jako synonimu bardziej ogólnego repozytorium binarnego, podobnie jak wiele osób używa Frigidaire lub lodówki do oznaczania lodówki, niezależnie od tego, czy jest to marka Frigidaire, czy nie.

Repozytorium binarne jest naturalnym rozszerzeniem repozytorium kodu źródłowego, ponieważ przechowuje wyniki procesu kompilacji, często określane jako artefakty. W większości przypadków repozytorium binarne nie jest używane bezpośrednio, ale za pośrednictwem menedżera pakietów dostarczanego z wybraną technologią.

W większości przypadków będą one przechowywać poszczególne komponenty aplikacji, które można później złożyć w pełny produkt - umożliwiając w ten sposób rozbicie kompilacji na mniejsze porcje, efektywniejsze wykorzystanie zasobów, skrócenie czasu kompilacji, lepsze śledzenie binarnych baz danych debugowania itp.

Oto niektóre z najpopularniejszych menedżerów pakietów, którymi można zarządzać za pomocą repozytorium binarnego:

  • Java: jar, ucho, wojna itp. Ma Maven i oficjalny MavenCentral . Istnieje wiele innych menedżerów pakietów, które będą również używać formatu binarnego repozytorium maven ( bluszcz , grad itp.).
  • .Net: nuget dla komponentów .NET (DLL i EXE), ale może być również wykorzystywany jako mechanizm dystrybucji w systemach Windows takich jak Chocolatey . Nowsze wersje Powershell mogą również wykorzystać to do dystrybucji modułów PowerShell, chociaż galeria PowerShell może zbudować dystrybucję lokalną z repozytorium binarnym i repozytorium w formacie nuget. Sprawdź także OneGet, czy interesuje Cię zarządzanie dystrybucją systemu Windows.
  • W JavaScript: mamy npm, który jest jednym z najpopularniejszych, będzie wymagał nodejs .
  • W python: jest pip i oficjalny indeks pakietu pypi , który można również utworzyć lokalnie za pomocą repozytorium binarnego, które będzie obsługiwać ten format.

Ta lista jest daleka od ukończenia, po prostu daje wyobrażenie o tym, co tam jest.

Repozytorium binarne może obsługiwać wszystkie te elementy pod jednym dachem, co znacznie ułatwia zarządzanie zespołami. Pamiętaj, że nie potrzebujesz bardzo dużego zespołu, aby zacząć czerpać korzyści z zarządzania pakietami binarnymi. Początkowa inwestycja nie jest bardzo duża, a korzyści są odczuwalne natychmiast. Zwłaszcza teraz, gdy coraz więcej platform, środowisk i języków integruje bezpośrednio zarządzanie nimi w zależności. Ich największą zaletą, jaką znalazłem, było jednak stworzenie środowiska, które Twoi programiści znajdą w naturalny i wygodny sposób, czyniąc je niezbędnym. Pomaga Ci jako twórcom stworzyć solidny łańcuch narzędzi i pomaga dopasować ogólne wrażenia do wybranego przez siebie stosu.

Jak powiedziałem wcześniej, istnieje wiele produktów , które mogą służyć jako menedżery pakietów binarnych, niektóre bardziej ogólne niż inne pod względem docelowego wykorzystania, różniące się również znacznie pod względem dostępności i cen.

Osobiście uważam, że repozytoria binarne są tak samo istotną częścią dobrze zaprojektowanej konfiguracji devops jak repozytorium kodu źródłowego lub ciągła integracja.

Newtopian
źródło
Merci za tę interesującą odpowiedź (też). Z jakiegoś powodu wszystko to sprawia, że ​​myślę jak „hm, więc to jest to, co zwykle nazywamy, w starych, dobrych środowiskach komputerów mainframe, takie jak biblioteki ładowania zawierające pliki wykonywalne (używane do uruchamiania regionów CICS / IMS / IDMS) ...” .
Pierre.Vriens
1
Jedną ważną rzeczą do dodania jest wzrost liczby publicznych repozytoriów, takich jak Maven Central itp. Modulecounts.com - często są one źródłem zaopatrzenia dla projektów oprogramowania, które stają się coraz większą liczbą części montażowych srores dla tych komponentów plus niestandardowy kod kleju / nakładki i oczywiście działalność specyficzna dla klienta logika.
Peter
1
nigdy nie słyszałem o modulecounts.com, ale strona jest teraz wyłączona, sprawdzę to później.
Newtopian
1
Ciekawa analogia lodówki do lodówki :)
Ravi Tiwari
6

Sposób, w jaki pomogło mi to zrozumieć na początku, różnica między repozytorium kodu źródłowego a repozytorium binarnym polegała na tym, aby pomyśleć o tym: * Github lub Bitbucket jest użyteczny do utrzymania całego „kodu” * Artefactory Jfrog jest użyteczny do utrzymania wbudowanego „binarnego” Przynajmniej dopóki nie czułem się dobrze z tymi warunkami!

Również znaczenie Artifactory można zrozumieć w odniesieniu do filozofii DevOps, która mówi: „Buduj raz, wdrażaj zawsze”. Ciągła integracja ma długą drogę do zbudowania pliku binarnego raz, umieszczenia go w Artifactory, a następnie wywołania go stamtąd w celu wdrożenia we wszystkich różnych środowiskach. W ten sposób jesteśmy pewni, że kod działający w Dev jest tym, który został wypchnięty do Prod i będzie tam działał.

Karthik Venkatesan
źródło
ciekawe wyjaśnienie, merci!
Pierre.Vriens
5

Artifactory to produkt Binary Repository Manager firmy Jfrog .

Masz rację - będąc menedżerem repozytoriów binarnych zwykle służy do zarządzania przechowywaniem generowanych i wykorzystywanych w procesie tworzenia oprogramowania.

Z głównej strony Artifactory :

Jako pierwszy i jedyny na rynku uniwersalny menedżer repozytoriów artefaktów, JFrog Artifactory w pełni obsługuje pakiety oprogramowania tworzone w dowolnym języku lub technologii.

...

... Artifactory zapewnia kompleksowe, zautomatyzowane i kuloodporne rozwiązanie do śledzenia artefaktów od projektu do produkcji.

Wspomniane zastosowania sugerują, że może być wystarczająco popularny dla ogólnego znaku towarowego w DevOps.

Dan Cornilescu
źródło
1
Merci Dan, jesteś jakoś potwierdzający, że Artifactory jest jak kombinacji słów Artifac ts z Reposi tory . Zastanawiam się nad dodatkowym pytaniem: co z artefaktami używanymi w produkcji, ale które nie są plikami binarnymi, takimi jak kod PHP, pliki CSS, skrypty bash itp.?
Pierre.Vriens
1
W przypadku kodu aplikacji mają systemy wersjonowania kodu źródłowego, takie jak cvs, svn, git, mercurial .. A w przypadku kodu konfiguracji, zarządzania konfiguracją i systemów dystrybucji, takich jak marionetka, szef kuchni, ansible, sól ..
Peter
@ Pierre.Vriens Nie myślałem o tym w ten sposób, jakoś zawsze przychodziło mi na myśl „fabryka” :) Ale teraz to rozumiem. Dzięki!
Dan Cornilescu
@ J.Doe merci za ten dodatek, i aby jeszcze bardziej rozszerzyć swój komentarz ... na komputerach mainframe, mają narzędzia takie jak „ChangeMan ZMF”, „Endevor SCM” itp. Narzędzia te są używane do wszystkich wymienionych funkcji (wersjonowanie, dystrybucja itp., ale także przepływ pracy, bezpieczeństwo itp. związane z tym wszystkim).
Pierre.Vriens
Jeśli więc wymyślimy na nowo ramki msin, co może być z nimi nie tak ?!
Peter
4

Myślę, że komplikowanie rzeczy jest tym, za co wszyscy są dziś doceniani. Spróbuję odpowiedzieć w skrócie na to pytanie.

Repozytorium źródłowe służy do przechowywania kodu i jego wersji, a artefactory służy do przechowywania programów wykonywalnych, które są wyjściami tego kodu [pliki binarne - pliki dll, jar, war, ear, msi, exe itp.]

Powodem, dla którego chcesz umieścić je osobno w repozytorium innym niż kod, może być wiele - od bezpiecznego dostępu, zagrożenia hakowania, wpisywania złośliwego kodu lub po prostu oddzielnej drogi dla klientów, którzy potrzebują pliki binarne.

Technologia SCM mogła się ujawnić, tworząc 2 rodzaje użytkowników (jeden z uprawnieniami programistów, którzy będą mogli uzyskać dostęp do kodu źródłowego, a drugi jako klient, który będzie miał dostęp do plików binarnych). Ale to nie poszło tą drogą! Więc teraz mamy artefakty.

Włócznia A1
źródło
2

Artefakt

Jest czymś, co jest wytwarzane / generowane / wytwarzane z określonego procesu

Słoik z kompilacji projektu Java.

Pytanie z twojego umysłu

Samochód z fabryki

Nowa piosenka

Repozytorium

Jest pojemnikiem, w którym wszystko się utrzymuje

Github dla projektu Java.

StackExchange dla twoich zniechęcających pytań

Teoretycznie Artifact - ory byłoby repozytorium artefaktu gdzie oni są zachowywane i zarządzanej przez cały cykl ich życia.

W kontekście DevOps Artifactory to produkt zarządzający artefaktami binarnymi. Przechowuje i zarządza różnymi typami (pakiety Jar, Python i npm itp.), Które produkujesz ze swoich kompilacji i ponownie używasz w czasie kompilacji lub wdrażania.

gumol
źródło
ciekawe wyjaśnienie, merci!
Pierre.Vriens
ca me fait plaisir!
gumol