Що таке артефакт (або артефакт)?


17

Питання про " Що таке сховище артефактів? " Містить відповідь із цікавим поясненням щодо його частини сховища. І з прочитання всієї відповіді я не впевнений, що саме означає « артефакт » у контексті DevOps.

Будь-які пропозиції?

Пс: З однієї з відповідей я, мабуть, розумію, що, можливо, артефакт - це те, про що мені цікаво (плутати?) ...


2
Наші друзі English SE написали вид на «артефакт» проти «артефакту»: english.stackexchange.com/questions/37903 / ...
7ochem

Відповіді:


19

У Вікіпедії є дуже гарна відповідь на це питання. Артефакт , який іноді називають також похідним об'єктом , є продуктом певного процесу, застосованого до сховища коду . Спочатку вони називалися Build Artefacts , але оскільки для їх створення було застосовано більше процесів, ніж побудова, перше слово було просто упущено.

Основна відмінність полягає в тому, що артефакти можна відтворити з сховища коду, використовуючи той самий процес, за умови, що ви зберегли середовище, в якому цей процес застосовувався. Оскільки цей процес може зайняти багато часу, а навколишнє середовище може бути збережено недосконало, щоб можна було точно відтворити артефакти точно таким же чином, ми почали зберігати їх у сховищах артефактів .

Зберігання їх крім сховища коду у сховищі артефактів - це дизайнерське рішення, яке може прийняти інженер DevOps. Деякі компанії, а саме Perforce , пропонують також використовувати своє сховище коду як сховище артефактів. Існують різні вимоги щодо доступу , аудиту , розмірів об'єкта , об'єкта мічення і масштабованість на кожному сховищі і тому в залежності від ситуації , часто краще використовувати два різних продуктів. Наприклад, Gitсховища копіюються в повному обсязі на кожну розроблювальну машину, і тому зберігання артефактів у сховищі коду збільшить його розмір поза будь-якими причинами, хоча останнім часом є способи зменшити це. Ще одне рішення - це які артефакти зберігати. Деякі компанії зберігають навіть проміжні артефакти як окремі файли об’єктів, щоб прискорити їх відновлення, інші зберігають просто лише кінцеві бінарні файли. Не всі артефакти мають однакове значення. Артефакти, що виникають у результаті складання версії, можуть пред'являти різні вимоги, ніж артефакти, що виникають у результаті складання розробника.

Найбільш поширені артефакти є результатом наступних процесів: Конфігурація , попередня обробка , Компіляція , язування , автоматизоване тестування , архівування , Упаковка , медіа - файли , створення і обробка , даних Генерація файлів , документації Синтаксичний , код аналізувати , QA , і т.д.


Речення про розмір git не зовсім точне, за допомогою git lfs ви можете пом'якшити цю проблему. (лише невелика точність)
Тенсібай

Цікаво, що ще більше підтверджує моє мислення (здогадки). 2 речі: ваше посилання perforce-link потребує виправлення та додаткового запитання: чи погоджуєтесь ви, що "відстеження ваших тестових даних" (введені вами дані та отриманий результат) також можна вважати такими артефактами? І BTW, ця відповідь нагадує мені про "рівні перевірки", що використовуються в області "програмного забезпечення" (якщо ви з цим знайомі). Я починаю замислюватися над темою програмного забезпечення, де слід вважати тему для DevOps ... Можливо, @Tensibai може захотіти також прокоментувати це?
Pierre.Vriens

1
@ Pierre.Vriens для ваших тестових даних, це важко на сьогодні, якщо ваші дані тестів є БД, що не відповідає поняттю артефакту. Що стосується дескроу, я не маю уявлення, як це, якщо питання достатньо сфокусовані, що для мене звучить нормально.
Тенсібай

@ Pierre.Vriens Я маю на увазі, що так багато речей, що відповідають назві "тестові дані" (від простого числа до мільйонів файлів через зразки записів БД), що це занадто широко без контексту.
Тенсібай

@ Pierre.Vriens (і вибачте, Jiri за повідомлення) Я не думаю, що договірні переговори з вашим провайдером не є темою, і те, що ви описуєте, - це лише юридичні переговори для того, що я думаю.
Тенсібай

7

Є два використання слова "артефакт", і одне робить вихідний код артефактом, а друге робить це не артефактом: це дійсно може бути дуже заплутано!

"Артефакт" як конкретна річ, порівняно з ідеальною річчю. Це значення є загальним значенням слова "предмет, зроблений людиною, як правило, культурно-історичний інтерес" і не є технічним жаргоном. Ось приклад в технічному контексті: Коли ви налагоджуєте програмне забезпечення, ви дізнаєтесь щось про програмне забезпечення. Часто цінні інвестиції перетворюють це навчання на програмний артефакт, як тест регресії. Інакше це навчання буде забуто, а зусилля, докладені для його здобуття, будуть марні. У цьому значенні вихідний код вважається артефактом.

"Артефакт" як щось, що виробляється за рецептом. Це значення використовує популярне зображення алхіміка, використовуючи якийсь езотеричний рецепт для створення магічного пристрою, який часто називають артефактом. Це технічний жаргон, який використовується для розмежування вихідного коду, який відповідає рецепту метафори алхіміка, і всього, що походить із цього вихідного коду, що відповідає артефакту в метафорі алхіміка. Наприклад, я просто автоматизував виробництво артефактів для моєї програми plop-fizz, тепер вихідні тарболи, файли підписів, пакети DEB та RPM можна створити лише за одну команду! Це значення не визнає вихідний код як артефакт, оскільки термін використовується для позначення того, що виробляється з цього вихідного коду.


3

Я думаю, що відповідь може відрізнятися від місця до місця. Там, де я працюю на даний момент, артефакт споживає щось інше, окрім вихідного коду, який використовується для розробки - це переходить до контролю джерела.

Сюди входять двійкові файли продукту чи інших необхідних продуктів, бібліотеки, файли об’єктів, тестові артефакти, такі як медіафайли або тестові дані.

Вихідний код не вважається артефактом. Якщо це не відповідає визначенню "споживається" - в нашому випадку, включаючи сторонні бібліотеки, код сценарію, який використовується для тестування або інших цілей (але не сама версія розробки).


Гм, цікаво, ти підтверджуєш те, про що я здогадувався. Чи погоджуєтесь ви, що насправді не важливо, про яку платформу чи ОС ми говоримо. Наприклад, навіть для мейнфреймів "може" використовувати і цю термінологію ... Якщо так, чи можете ви також включити щось про це у свою відповідь, будь ласка?
Pierre.Vriens

Навіть фактичний код з контролю версій можна / слід вважати артефактом, якщо він споживається. Наприклад, HTML-сторінки на основі шаблонів, які потрібно розгорнути як на веб-сайті. Вони являють собою артефакти розгортання, які, можливо, потрібно буде явно скопіювати разом з іншими вбудованими артефактами в якесь тимчасове місце для фактичного розгортання, наприклад. Але це може не мати великого сенсу зберігати їх у сховищі артефактів, оскільки їх завжди можна отримати з сховища вихідного коду.
Дан Корнілеску

@Pierre Підтвердження того, що ОС є ортогональним для артефакту, я не впевнений, чому він повинен бути включений у відповідь, багато інших речей також не мають значення.
Rsf

0

Бічна нота з боку культури. Хоча в DevOps ми розглядаємо концепцію "сховища артефактів" як дану ситуацію, схоже, не так багато зв’язку з організаційним процесом.

Проблема з культурою: якщо організація використовує ITIL, сертифіковані люди сказали б: "нам потрібно мати медіатеку, що визначається, таке сховище для розміщення створених нами елементів конфігурації програмного забезпечення". Тож люди, які піклуються про добре структуровані ІТ-процеси, не знають, які інструменти (не менеджмент) підтримують, які використовуються. І навпаки, якщо вам потрібне обґрунтування мови Nexus або Artifactory, можливо, вам буде важко пояснити це залежно від організації.

Подальше читання: https://en.wikipedia.org/wiki/Definitive_Media_Library


1
Привіт. Ласкаво просимо на сайт. Будь ласка, додайте більше інформації до відповіді. У його теперішньому стані це лише посилання, і буде позначено прапором :)
Dawny33

якщо DevOps також стосується культури, я вважаю, що посилання на ITIL важливе, оскільки іноді воно регулює ІТ-організацію на більш високому організаційному рівні. Додано більше пояснень для уточнення цієї симетрії незнання.
Петро

1
Я не думаю, що це дійсно вирішує питання про те, що є артефактом, але принаймні це виглядає як чесна спроба відповісти зараз.
Тенсібай

Я погоджуюся з @Tensibai (зараз) і видалив попередній коментар (більше не підозріло). І хоча все, що відповідає у цій відповіді, має сенс, я все ще не розумію, як ця "бічна записка" відповідає на моє запитання, яке я намагався також узагальнити в назві запитання, тобто " Що таке артефакт (або артефакт )? ". Я вітаю нові спроби, гаразд?
Pierre.Vriens
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.