Что такое артефакт (или артефакт)?

17

Вопрос « Что такое хранилище артефактов? » Содержит ответ с интересным объяснением его части в хранилище. И, прочитав весь ответ, я не уверен, что именно означает « артефакт » в контексте DevOps.

Какие-либо предложения?

Ps: Из одного из ответов я, кажется, понимаю, что, может быть, артефакт - это то, что меня интересует (смущает?)

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

Ответы:

19

В Википедии есть очень хороший ответ на этот вопрос. Артефакт , иногда называемый также Derived Object , является продуктом некоторого процесса, примененного к репозиторию кода . Первоначально их называли « Артефакты сборки» , но поскольку для их создания использовалось больше процессов, чем «сборка», первое слово было просто отброшено.

Основное отличие состоит в том, что артефакты могут быть воссозданы из репозитория кода с использованием того же процесса, при условии, что вы сохранили среду, в которой был применен процесс. Поскольку этот процесс может занимать много времени, а среда может быть несовершенно сохранена, чтобы можно было точно воссоздать артефакты, мы начали хранить их в репозиториях артефактов .

Хранение их отдельно от кода Repository в Артефакте Repository является дизайнерским решением инженер DevOps бы. Некоторые компании, а именно Perforce , предлагают использовать свой репозиторий кода в качестве репозитория артефактов. Существуют различные требования в отношении доступа , аудита , размеров объекта , объекта мечения и масштабируемость на каждом хранилище и поэтому в зависимости от ситуации , часто лучше использовать два различных продуктов. Например Gitрепозитории полностью копируются на каждую машину разработки, и поэтому хранение артефактов в репозитории кода увеличило бы его размер без всякой причины, хотя в последнее время есть способы смягчить это. Другое решение - какие артефакты хранить. Некоторые компании хранят даже промежуточные артефакты в виде отдельных объектных файлов для ускорения повторных сборок, другие хранят просто конечные двоичные файлы. Не все артефакты имеют одинаковое значение. Артефакты, возникающие в результате сборки выпуска, могут иметь другие требования, чем артефакты, являющиеся результатом сборки разработчика.

Наиболее распространенные артефакты являются результатом следующих процессов: Конфигурация , Preprocessing , Подборка , Linking , Automated Testing , архивированию , Упаковка , медиа - файлов , создания и обработки , данной Генерация файлов , документации Синтаксического , код анализировать , QA , и т.д.

Иржи Клауда
источник
Предложение о размере git не совсем точно, с помощью git lfs вы можете решить эту проблему. (только небольшая точность)
Tensibai
Интересно, что даже больше подтверждает мои мысли (догадки). 2 вещи: ваша ссылка на перформанс нуждается в исправлении и лишний вопрос: согласитесь ли вы, что «отслеживание ваших тестовых данных» (вход, который вы использовали, и результат, который вы получили) также может рассматриваться как такие артефакты? И кстати, этот ответ напоминает мне об «уровнях проверки», используемых в области «условного депонирования программного обеспечения» (если вы знакомы с этим). Я начинаю задумываться о темах условного депонирования программного обеспечения, которые следует рассматривать как тему для DevOps ... Может быть @Tensibai тоже захочет это прокомментировать?
Pierre.Vriens
1
@ Pierre.Vriens для ваших тестовых данных, сегодня сложно, если ваши тестовые данные являются БД, что не соответствует понятию артефакта. Что касается условного депонирования, я понятия не имею, если вопросы достаточно сфокусированы, что звучит нормально для меня.
Тенсибай
@ Pierre.Vriens Я имею в виду, что так много всего подходит под названием «тестовые данные» (от простого числа до миллионов файлов через примеры записей БД), что оно слишком широкое без контекста.
Тенсибай
@ Pierre.Vriens (и прошу прощения у Иржи за уведомления) Я не думаю, что договорные переговоры с вашим провайдером ведутся по теме, и то, что вы описываете, - это просто юридические переговоры, как мне кажется.
Тенсибай
7

Существует два использования слова «артефакт», и один делает исходный код артефактом, а второй - не артефактом: это действительно может сбивать с толку!

«Артефакт» как конкретная вещь, а не как идеальная вещь. Это значение является общим значением слова «объект, созданный человеком, обычно представляющим культурный или исторический интерес», и не является техническим жаргоном. Вот пример в техническом контексте: когда вы отлаживаете программное обеспечение, вы узнаете что-то о программном обеспечении. Часто ценные инвестиции превращают это обучение в программный артефакт, такой как регрессионный тест. В противном случае это обучение будет забыто, а усилия, приложенные для его приобретения, будут потрачены впустую. В этом смысле исходный код считается артефактом.

«Артефакт» как нечто, производимое по рецепту. В этом значении используется популярное изображение алхимика, использующее некоторый эзотерический рецепт для создания магического устройства, часто называемого артефактом. Это технический жаргон, используемый для различения исходного кода, который соответствует рецепту в метафоре алхимика, и всего, что происходит от этого исходного кода, что соответствует артефакту в метафоре алхимика. Например, я только что автоматизировал создание артефактов для моей программы plop-fizz, теперь архивы исходного кода, файлы сигнатур, пакеты DEB и RPM могут быть созданы только одной командой! Это значение не признает исходный код как артефакт, так как этот термин используется для обозначения того, что производится из этого исходного кода.

Михаэль Ле Барбье Грюневальд
источник
3

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

Это включает двоичные файлы продукта или других необходимых продуктов, библиотеки, объектные файлы, тестовые артефакты, такие как медиа-файлы или тестовые данные.

Исходный код не считается артефактом. Если это не соответствует определению «используется» - в нашем случае, включая сторонние библиотеки, код скрипта, используемый для тестирования или в других целях (но не в самой версии разработки).

RSF
источник
Хм, интересно, ты подтверждаешь то, что я угадывал. Согласитесь, не имеет значения, о какой платформе или ОС мы говорим. Например, даже для мэйнфреймов можно использовать и эту терминологию ... Если да, то можете ли вы включить что-то об этом в свой ответ, пожалуйста?
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