Что такое артефакт?

55

Есть довольно много вопросов и ответов, которые упоминают « артефакт ».

Я не удивлюсь, если это как-то связано с .

Мои вопросы :

  • Что на самом деле является «артефактом» (в контексте DevOps)?
  • Почему используются артефакты?
Pierre.Vriens
источник
Довольно много интересных ответов на то, что я считаю довольно простым вопросом. Достаточно забавно, что все они напоминают мне о похожей концепции в старых добрых средах мэйнфреймов (где мои корни DevOps ... и откуда, похоже, возникло так много концепций DevOps).
Pierre.Vriens

Ответы:

67

Artifactory - это продукт JFrog, который служит менеджером бинарных репозиториев . При этом очень часто можно использовать «артефакт» в качестве синонима более общего бинарного хранилища, так же как многие люди используют Frigidaire или холодильник для обозначения холодильника независимо от того, является ли он брендом Frigidaire или нет.

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

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

Вот некоторые из наиболее популярных менеджеров пакетов, которыми можно управлять с помощью бинарного репозитория:

  • Java: jar, ear, war и т. Д. Имеет Maven и официальный MavenCentral . Есть много других менеджеров пакетов, которые также будут использовать формат двоичного репозитория maven ( ivy , gradle и т. Д.).
  • .Net: nuget для компонентов .NET (DLL и EXE), но также может использоваться в качестве механизма распространения в системах Windows, таких как Chocolatey . Более новые версии Powershell также могут использовать это для распространения модулей PowerShell, хотя галерея PowerShell, из которой можно создать локальный дистрибутив с двоичным репозиторием и репозиторием в формате nuget. Также проверьте OneGet, если вам интересно управление дистрибуцией Windows.
  • В JavaScript: у нас есть npm, который является одним из самых популярных, и нам потребуется nodejs .
  • В python: есть pip и официальный индекс пакета pypi , который также может создавать локальный экземпляр через двоичный репозиторий, который будет поддерживать формат.

Этот список далеко не полный, просто дает представление о том, что там.

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

Как я уже говорил ранее, существует множество продуктов , которые могут служить менеджерами бинарных пакетов, некоторые из них более универсальны, чем другие по своему целевому назначению, также сильно различаясь по доступности и ценам.

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

Newtopian
источник
Мерси за этот интересный ответ (также). По какой-то причине все это заставляет меня думать, как «хм, так что это то, что мы обычно называем в старых добрых средах мэйнфреймов, такие вещи, как загрузка библиотек, содержащих исполняемые файлы (используемые для запуска ваших регионов CICS / IMS / IDMS) ...» ,
Pierre.Vriens
1
Одна важная вещь, которую нужно добавить, - это рост числа общедоступных репозиториев, таких как Maven Central и т. Д. Modulecounts.com - они часто являются источником поставок для программных проектов, которые становятся все более и более сборочными продуктами для этих компонентов, а также настраиваемым кодом клея / внешнего интерфейса и, конечно же, специфическим бизнесом для конкретного клиента. логика.
Питер
1
никогда не слышал о modulecounts.com, сайт сейчас недоступен, я проверю это позже.
Ньютопия
1
Интересная аналогия холодильника с холодильником :)
Рави Тивари
8

То, как это помогло мне понять изначально, разница между хранилищем исходного кода и двоичным хранилищем заключалась в том, чтобы думать о нем следующим образом: * Github или Bitbucket полезен для поддержки всего «кода» * Jfrog Artifactory полезен для поддержки встроенного «двоичного» По крайней мере пока я не освоился с этими условиями!

Кроме того, важность Artifactory может быть понята в связи с философией DevOps «Построй один раз, разверни всегда». В Continuous Integration достаточно пройти долгий путь, чтобы один раз собрать свой двоичный файл, поместить его в Artifactory, а затем вызвать его оттуда для развертывания во всех различных средах. Таким образом, мы уверены, что код, который работает в Dev, передается в Prod и будет работать там.

Картик Венкатесан
источник
интересное объяснение, мерси!
Pierre.Vriens
6

Artifactory является продуктом Binary Repository Manager от Jfrog .

Вы правы - будучи менеджером бинарных репозиториев, он обычно используется для управления хранилищем созданных и используемых в процессе разработки программного обеспечения.

С главной страницы Артефактуры :

Являясь первым и единственным универсальным менеджером репозитория артефактов на рынке, JFrog Artifactory полностью поддерживает пакеты программного обеспечения, созданные на любом языке или технологии.

...

... Artifactory предоставляет комплексное, автоматизированное и пуленепробиваемое решение для отслеживания артефактов от разработки до производства.

Упоминания, которые вы упомянули, предполагают, что он может быть достаточно популярным для универсального товарного знака в DevOps.

Дан Корнилеску
источник
1
Merci Дэн, ты каким - то образом подтвердив , что Artifactory, как сочетание слов Artifac TS с Reposi тории . Дополнительный вопрос, который меня интересует, заключается в следующем: как насчет артефактов, которые используются в производстве, но не являются двоичными файлами, такими как код PHP, файлы CSS, сценарии bash и т. Д.?
Pierre.Vriens
1
Для кода приложения у них есть системы контроля версий исходного кода, такие как cvs, svn, git, mercurial .. А для кода конфигурации, систем управления конфигурацией и распределения, таких как puppet, chef, ansible, salt.
Питер
@ Pierre.Vriens Я не привык думать об этом так, как-то «фабрика» всегда приходила на ум в первую очередь :) Но теперь я полностью вижу это. Спасибо!
Дан
@ J. Doe merci для этого дополнения и просто для дальнейшего расширения вашего комментария ... на мэйнфреймах у них есть такие инструменты, как "ChangeMan ZMF", "Endevor SCM" и т. Д. Эти инструменты используются для всех функций, которые вы упомянули (управление версиями, распределение и т. д., но также и для рабочего процесса, безопасности и т. д., связанных со всем этим).
Pierre.Vriens
Так что, если мы только заново изобретаем msinframes, что может быть с ними не так ?!
Питер
4

Я думаю, что все усложняют то, за что сегодня все ценят. Я постараюсь ответить на этот вопрос вкратце.

Source Repository используется для хранения кода и его версий, в то время как artifactory используется для хранения исполняемых программ, которые являются выходами этого кода [binaries - dll, jar, war, ear, msi, exe файлы и т. Д.]

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

Технология SCM могла бы раскрыться для создания двух типов пользователей (один с привилегиями разработчика, который сможет получить доступ к исходному коду, а другой - как клиент, который просто сможет получить доступ к двоичным файлам). Но это не взял этот путь! Так что теперь у нас есть артефакты.

Копье А1
источник
2

Артефакт

Это то, что производится / генерируется / создается из определенного процесса

Jar из сборки проекта Java.

Вопрос в твоем уме

Автомобиль с завода

Новая песня

Хранилище

Является ли сосуд, где вещи сохраняются

Github для проекта Java.

StackExchange за ваши сложные вопросы

В теории , артефакт - это хранилище артефактов, где они сохраняются и управляются на протяжении всего их жизненного цикла.

В контексте DevOps, Artifactory - это продукт, который управляет бинарными артефактами. Он хранит и управляет различными типами (пакеты Jar, Python и npm и т. Д.), Которые вы создаете из своих сборок и повторно используете во время компиляции или развертывания.

gumol
источник
интересное объяснение, мерси!
Pierre.Vriens
мож мне свершиться!
gumol