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


17

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

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

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


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

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

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

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


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