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


53

Існує досить багато запитань і відповідей, в яких згадується " артефакт ".

Я не здивуюсь, якщо це якимось чином пов'язане з .

Мої запитання :

  • Що насправді є "артефактом" (в контексті DevOps)?
  • Для чого використовуються артефакти?

Чимало цікавих відповідей на те, що я повинен бути досить основним питанням. Досить смішно, всі вони нагадують мені про подібну концепцію в старих хороших середовищах мейнфрейму (де мої корені DevOps ... і звідки походить стільки концепцій DevOps).
Pierre.Vriens

Відповіді:


66

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

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

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

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

  • Ява: банку, вухо, війна тощо має Maven та офіційний MavenCentral . Є багато інших менеджерів пакетів , які будуть використовувати Maven двійковий формат сховища , а також ( плющ , Gradle і т.д.).
  • .Net: суттєво для компонентів .NET (DLL та EXE), але також може використовуватися як механізм розподілу в системах Windows Thorugh, таких як Chocolatey . Новіші версії Powershell також можуть використовувати це для розподілу модулів shellhell, хоча галерея повноцінних оболонок якої може побудувати локальний дистрибутив з бінарним сховищем та сховищем у нутритному форматі. Також перевірте OneGet, чи цікавить вас управління дистрибуцією Windows.
  • У JavaScript: у нас є npm, який є одним з найпопулярніших, потрібні будуть nodejs .
  • У python: є pip та індекс офіційного пакету pypi , який також можна створити локальний екземпляр через бінарне сховище, яке підтримуватиме формат.

Цей список ще далеко не повний, він просто дає уявлення про те, що там є.

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

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

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


Мерсі за цю цікаву відповідь (також). Чомусь все це змушує мене думати як "гм, тому це, як ми називаємо, у старих добрих середовищах мейнфрейму, такі речі, як завантаження бібліотек, що містять виконувані файли (використовуються для запуску ваших регіонів CICS / IMS / IDMS) ..." .
Pierre.Vriens

1
Одна важлива річ , щоб додати це зростання державних сховищ , як Maven Central і т.д. modulecounts.com - це часто є джерелом харчування для програмних проектів , які стають все більш і більш складальні srores для цих компонентів плюс призначений для користувача клей / код зовнішнього інтерфейсу і, звичайно , клієнтів конкретного бізнесу логіка.
Петро

1
ніколи не чув про modulecounts.com, сайт поки не працює, я перевірю його пізніше.
Ньютопський

1
Цікава аналогія від холодильника до холодильника :)
Раві Тіварі

6

Те, як це допомогло мені зрозуміти спочатку, різниця між сховищем вихідного коду та бінарним сховищем полягала в тому, щоб думати про це як: * Github або Bitbucket корисно підтримувати весь 'код' * Jfrog Artifactory корисно підтримувати вбудований "двійковий" принаймні поки мені не було комфортно з цими умовами!

Також важливість Artifactory можна зрозуміти стосовно філософії DevOps до "Будуй один раз, завжди розгортай". У постійній інтеграції йде довгий шлях, щоб один раз побудувати свій двійковий файл, поставити його в Artifactory, а потім викликати його звідти для розгортання у всіх різних середовищах. Таким чином, ми впевнені, що код, який працює в Dev, - це той, який підштовхується до Prod і буде там працювати.


цікаве пояснення, мерсі!
Pierre.Vriens

5

Artifactory - продукт диспетчера бінарних репозиторіїв від компанії Jfrog .

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

З головної веб-сторінки Artifactory :

Як перший і єдиний універсальний менеджер репозиторіїв Artifact на ринку, JFrog Artifactory повністю підтримує програмні пакети, створені будь-якою мовою чи технологією.

...

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

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


1
Merci Ден, ти яким - то чином підтвердивши , що Artifactory, як поєднання слів Artifac TS з Reposi торії . Додатковим питанням, про яке я задаюсь питання, є таке: як щодо артефактів, які використовуються у виробництві, але які не є бінарними файлами, такими як PHP-код, файли CSS, bash-скрипти тощо?
Pierre.Vriens

1
Для коду програми вони мають вихідний код управління версіями системи , такі як CVS, SVN, Git, Mercurial .. А для коду конфігурації, системи управління конфігураціями і розподілу, як ляльковий, кухар, анзібль, сіль ..
Пітер

@ Pierre.Vriens Мені не доводилося думати про це таким чином, якимось чином "фабричним" завжди спочатку прийшов до тями :) Але я це зараз повністю бачу. Дякую!
Дан Корнілеску

@ J.Doe merci за це доповнення та просто для подальшого розширення вашого коментаря ... у мейнфреймах у них є такі інструменти, як "ChangeMan ZMF", "Endevor SCM" тощо. Ці інструменти використовуються для всіх згаданих вами функцій (версія, розповсюдження тощо, але також для робочого процесу, безпеки тощо, пов'язаного з усім цим).
Pierre.Vriens

Отже, якщо ми лише винаходимо msinframes, що може бути з ними не так ?!
Петро

4

Я думаю, що ускладнення речей - це те, що сьогодні всі цінують. Спробую відповісти на це питання коротко.

Джерело-сховище використовується для зберігання коду та його версій, тоді як артефактор використовується для зберігання виконуваних програм, які є виводами цього коду [бінарні файли - dll, jar, war, ear, msi, exe-файли тощо]

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

Технологія SCM могла призвести до створення двох видів користувачів (одного з привілеями розробника, який зможе отримати доступ до вихідного коду, а іншого як клієнта, який просто зможе отримати доступ до бінарних файлів). Але це маршрут не взяв! Тож зараз у нас є артефакти.


2

Артефакт

Це щось, що виробляється / генерується / створюється з певного процесу

Збудувати проект Java.

Питання поза розумом

Автомобіль із заводу

Нова пісня

Сховище

Це ємність, де зберігаються речі

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

StackExchange для ваших страхітливих питань

В ТЕОРІЇ Артефакт - орія буде сховищем артефакту, де вони зберігаються та керуються протягом усього життєвого циклу.

У контексті DevOps Artifactory - це продукт, що управляє бінарними артефактами. Він зберігає та керує різними типами (пакети Jar, Python та npm тощо), які ви виробляєте із своїх збірок та повторного використання під час компіляції чи розгортання.


цікаве пояснення, мерсі!
Pierre.Vriens

ca me fait plaisir!
гумол
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.