Что такое хранилище артефактов?

Ответы:

32

Во время разработки вы генерируете изрядное количество различных артефактов. Они могут включать в себя:

  • Исходный код
  • Скомпилированное приложение
  • Развертываемый пакет
  • Документация

и, возможно, другие

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

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

  • Поддержка версий: правильно хранить некоторые метаданные, например, когда был создан каждый артефакт, какой у них номер версии, хранить их хэши и т. Д.
  • Сохранение: убедитесь, что вы сохраняете только важные артефакты и автоматически удаляете те, которые являются только моментальными снимками / больше не нужны, и т. Д. На основе различных критериев, которые вы можете настроить
  • Контроль доступа: настройте, кто может публиковать и кто может загружать различные артефакты.
  • Продвижение: способность продвигать артефакты. Например, у вас могут быть артефакты моментальных снимков с коротким периодом хранения на сервере рядом с вашими кодерами, а также отдельный репозиторий рядом с действующими серверами, где появляются только артефакты, которые считаются развертываемыми. Это также включает поддержку различных версий каналов и перемещение артефактов между ними (например, продвижение конкретной версии из бета-версии в стабильную).
  • Выступать в качестве собственного хранилища для артефактов. Это означает, что вы можете использовать его в качестве основного хранилища для maven, rubygems, docker и т. Д. Это также может включать в себя кэширование артефактов из официальных хранилищ.
SztupY
источник
Возможно, стоит добавить возможность 'channel' к поддержке Versionning, имея возможность иметь некоторый компьютер, предназначенный для последней версии в канале "Develop", и продвигать машину, предназначенную для конкретной версии в канале "stable".
Тенсибай
@ Pierre.Vriens добавил несколько небольших комментариев, но, возможно, к ним можно будет обратиться и в отдельном Вопросе
SztupY
Мерси, но на всякий случай, вот твой шанс еще раз прокомментировать мой дополнительный комментарий ...
Pierre.Vriens
Имеет ли смысл также отслеживать файлы конфигурации или фикстуры в таких репозиториях?
17
7

Есть менеджеры репозитория и Универсальные менеджеры репозитория пакетов (UPM).

UPM может хранить все ваши артефакты сборки для Jenkins, teamcity и т. Д., И, как правило, может также выполнять функции менеджера хранилища для многих различных типов бинарных артефактов Maven, npm, NuGet и других.

Это будут такие инструменты, как Jfrog Artifactory , Inedo ProGet и Sonatype Nexus .

Довольно приличное сравнение здесь: https://binary-repositories-comparison.github.io/

Карл Харнаги
источник