Co to jest artefakt (lub artefakt)?


17

Pytanie o „ Co to jest repozytorium artefaktów? ” Zawiera odpowiedź z interesującym wyjaśnieniem części repozytorium. A po przeczytaniu całej odpowiedzi nie jestem pewien, co dokładnie oznacza „ artefakt ” w kontekście DevOps.

Jakieś sugestie?

Ps: Z jednej z odpowiedzi wydaje mi się, że rozumiem, że może artefakt jest tym, o czym zastanawiam się (mylić?)…


2
Nasi przyjaciele English SE napisali opinię na temat „artefakt” vs. „artefakt”: english.stackexchange.com/questions/37903/…
7ochem

Odpowiedzi:


19

Wikipedia ma bardzo dobrą odpowiedź na to pytanie. Artefakt , czasami nazywany także obiektem pochodnym , jest produktem pewnego procesu zastosowanego do repozytorium kodu . Początkowo były one nazywane artefaktami kompilacji , ale ponieważ zastosowano więcej procesów niż build, aby je utworzyć, pierwsze słowo zostało po prostu usunięte.

Główną różnicą jest to, że artefakty można odtworzyć z repozytorium kodu przy użyciu tego samego procesu, pod warunkiem zachowania środowiska, w którym proces został zastosowany. Ponieważ ten proces może być czasochłonny, a środowisko może zostać niedoskonale zachowane, aby móc odtworzyć artefakty w ten sam sposób, zaczęliśmy przechowywać je w repozytoriach artefaktów .

Przechowywanie ich poza Code Repository w Artifact Repozytorium jest decyzja projektowa inżynier devops stałaby. Niektóre firmy, a mianowicie Perforce , sugerują również korzystanie z repozytorium kodów jako repozytorium artefaktów. Istnieją różne wymagania w zakresie dostępu , badania , wielkości obiektów , obiekt tagging i skalowalność na każdym repozytorium, a więc w zależności od sytuacji, często lepiej jest użyć dwóch różnych produktów. Na przykład Gitrepozytoria są kopiowane w całości na każdą maszynę programistyczną, więc przechowywanie artefaktów w repozytorium kodu zwiększyłoby jego rozmiar ponad wszelką przyczynę, chociaż ostatnio istnieją sposoby na złagodzenie tego. Kolejną decyzją jest wybór artefaktów do przechowywania. Niektóre firmy przechowują nawet pośrednie artefakty jako pojedyncze pliki obiektów, aby przyspieszyć ponowne kompilacje, inne przechowują tylko końcowe pliki binarne. Nie wszystkie artefakty mają tę samą wartość. Artefakty wynikające z kompilacji wersji mogą mieć inne wymagania niż artefakty powstałe w kompilacji programisty.

Najczęstsze artefakty to wyniki następujących procesów: Konfiguracja , przetwarzanie wstępne , kompilacja , łączenie , automatyczne testowanie , archiwizacja , pakowanie , tworzenie i przetwarzanie plików multimedialnych , generowanie plików danych , analizowanie dokumentacji , analiza kodu , kontrola jakości itp.


Zdanie dotyczące rozmiaru git nie jest całkowicie dokładne, używając git lfs możesz złagodzić ten problem. (tylko mała precyzja)
Tensibai,

Ciekawe, co jeszcze bardziej potwierdza moje myślenie (zgadywanie). 2 rzeczy: twój link perforujący wymaga naprawy i dodatkowego pytania: czy zgodziłbyś się, że „śledzenie danych testowych” (użyte dane wejściowe i otrzymane dane wyjściowe) można również uznać za takie artefakty? A tak przy okazji, ta odpowiedź przypomina mi o „poziomach weryfikacji” używanych w obszarze „oprogramowania escrow” (jeśli jesteś z tym zaznajomiony). Zaczynam się zastanawiać, czy tematy związane z depozytem oprogramowania powinny być rozpatrywane jak w temacie DevOps ... Może @Tensibai może chcieć to również skomentować?
Pierre.Vriens

1
@ Pierre.Vriens dla danych testowych, to trudne do dnia, jeśli dane testowe są DB, które nie pasują do pojęcia artefaktu. Jeśli chodzi o escrow, nie mam pojęcia, czy pytania są wystarczająco skoncentrowane, co wydaje mi się w porządku.
Tensibai,

@ Pierre.Vriens Mam na myśli, że tak wiele rzeczy pasuje do nazwy „danych testowych” (od prostej liczby do milionów plików poprzez przykładowe rekordy DB), że jest zbyt szeroka bez kontekstu.
Tensibai,

@ Pierre.Vriens (i przepraszam Jiri za powiadomienia) Nie sądzę, że negocjacje umowne z twoim dostawcą dotyczą tematu, a to, co opisujesz, jest po prostu legalnymi negocjacjami dla tego, co myślę.
Tensibai,

7

Istnieją dwa sposoby użycia słowa „artefakt”, a jeden powoduje, że kod źródłowy jest artefaktem, a drugi sprawia, że ​​nie jest on artefaktem: może to być naprawdę mylące!

„Artefakt” jako rzecz konkretna, a rzecz idealna - znaczenie to jest powszechnym znaczeniem słowa „przedmiot wykonany przez człowieka, zwykle o znaczeniu kulturalnym lub historycznym” i nie jest technicznym żargonem. Oto przykład w kontekście technicznym: debugując oprogramowanie, dowiadujesz się czegoś o nim. Często cenną inwestycją jest przekształcenie tego uczenia się w artefakt oprogramowania, taki jak test regresji. W przeciwnym razie nauka ta zostanie zapomniana, a wysiłek włożony w jej zdobycie zostanie zmarnowany. W tym znaczeniu kod źródłowy jest uważany za artefakt.

„Artefakt” jako coś wytworzonego przez przepis - To znaczenie wykorzystuje popularny wizerunek alchemika używającego jakiegoś ezoterycznego przepisu do wytworzenia magicznego urządzenia, często nazywanego artefaktem. Jest to żargon techniczny używany do rozróżnienia między kodem źródłowym, który odpowiada przepisowi w metaforze alchemika, a wszystkim, co pochodzi z tego kodu źródłowego, który odpowiada artefaktowi w metaforze alchemika. Na przykład właśnie zautomatyzowałem produkcję artefaktów dla mojego programu plop-fizz, teraz źródłowe pliki archiwów, pliki sygnatur, pakiety DEB i RPM mogą być tworzone w jednym poleceniu! To znaczenie nie rozpoznaje kodu źródłowego jako artefaktu, ponieważ termin jest używany do oznaczenia tego, co powstaje z tego kodu źródłowego.


3

Przypuszczam, że odpowiedź może się różnić w zależności od miejsca. Tam, gdzie w tej chwili pracuję, artefakt jest czymś pochłoniętym przez jakąś inną istotę, z wyjątkiem kodu źródłowego używanego do programowania - dotyczy to kontroli źródła.

Obejmuje to pliki binarne produktu lub innych potrzebnych produktów, bibliotek, plików obiektowych, artefaktów testowych, takich jak pliki multimedialne lub dane testowe.

Kod źródłowy nie jest uważany za artefakt. Chyba że odpowiada definicji „konsumowany przez” - w naszym przypadku obejmuje biblioteki stron trzecich, kod skryptu używany do testowania lub innych celów (ale nie samą wersję programistyczną).


Hm, ciekawe, potwierdzasz to, co zgadywałem. Czy zgadzasz się, że tak naprawdę nie ma znaczenia, o której platformie lub systemie operacyjnym mówimy. Na przykład nawet w przypadku komputerów mainframe można by użyć tej terminologii… Jeśli tak, czy możesz również podać coś na ten temat w swojej odpowiedzi?
Pierre.Vriens

Nawet rzeczywisty kod z kontroli wersji może / powinien być uważany za artefakt, jeśli zostanie wykorzystany. Na przykład oparte na szablonach strony HTML, które należy wdrożyć w obecnej postaci w witrynie. Są to artefakty wdrażania, które mogą wymagać jawnego skopiowania wraz z innymi wbudowanymi artefaktami w tymczasowej lokalizacji, na przykład dla faktycznego wdrożenia. Ale przechowywanie ich w repozytorium artefaktów może nie mieć większego sensu, ponieważ zawsze można je uzyskać z repozytorium kodu źródłowego.
Dan Cornilescu,

@Pierre Potwierdzając, że system operacyjny jest ortogonalny do bycia artefaktem, nie jestem pewien, dlaczego powinien on zostać uwzględniony w odpowiedzi, wiele innych rzeczy również nie ma znaczenia.
Rsf

0

Uwaga dodatkowa po stronie kultury. Podczas gdy w DevOps uważamy pojęcie „repozytorium artefaktów” za daną sytuację, wydaje się, że nie ma tak dużego powiązania z procesem organizacyjnym.

Problem związany z kulturą: jeśli organizacja korzysta z ITIL, certyfikowani ludzie powiedzieliby: „musimy mieć określoną bibliotekę multimediów, takie repozytorium, aby umieścić wyprodukowane przez nas elementy konfiguracji oprogramowania”. Dlatego osoby, którym zależy na dobrze ustrukturyzowanych procesach IT, nie wiedzą, które narzędzia (niezwiązane z zarządzaniem) obsługują to i są w użyciu. Odwrotnie, jeśli potrzebujesz uzasadnienia dla języka Nexus lub Artifactory, możesz mieć trudności z wyjaśnieniem go w zależności od organizacji.

Dalsza lektura: https://en.wikipedia.org/wiki/Definitive_Media_Library


1
Cześć. Witamy na stronie. Dodaj więcej informacji do odpowiedzi. W obecnym stanie jest tylko łączem i zostanie oznaczony :)
Dawny33

jeśli DevOps dotyczy także kultury, myślę, że link do ITIL jest ważny, ponieważ czasami rządzi organizacją IT na wyższym poziomie organizacyjnym. Dodano więcej wyjaśnień, aby wyjaśnić tę symetrię ignorancji.
Peter

1
Nie sądzę, żeby tak naprawdę zajmowało się pytaniem, co to jest artefakt, ale przynajmniej wygląda na uczciwą próbę odpowiedzi.
Tensibai,

Zgadzam się z @Tensibai (teraz) i usunąłem mój poprzedni komentarz (nie jest już podejrzany). I chociaż wszystko w tej odpowiedzi ma sens, nadal nie rozumiem, w jaki sposób ta „odpowiedź z boku” odpowiada na moje pytanie, które starałem się streścić również w tytule pytania, tj. „ Co to jest artefakt (lub artefakt) )? ”. Z zadowoleniem przyjmuję nowe próby, OK?
Pierre.Vriens
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.