Репозитории реестра
Функционал доступен в Enterprise и Atlas версиях.
Репозитории реестра - функция платформы, являющаяся логическим продолжением функции реестра контейнеров и пакетов. В отличие от общего реестра, в рамках которого, например, Maven-пакеты, Docker-контейнеры и артефакты, сохраненные как пакеты Generic, находятся в одном общем реестре, репозитории реестра хранят в себе артефакты только одного определенного типа. Перечисленные ниже особенности позволяют выстроить любую необходимую структуру хранения файлов:
- обращение к артефактам, в том числе, во внешних реестрах
- создания репозиториев на уровне проекта, компании или всего сервиса
- отсутствие ограничений на число самих репозиториев
Создание репозитория реестра
Репозитории реестра могут быть созданы на трех возможных уровнях доступа - проект, компания и весь сервис:
- Проект - после создания проекта, необходимо перейти в разделе Реестр контейнеров и пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра доступно участникам проекта с ролью не меньше Администратора.
- Компания - после создания компании, необходимо перейти в разделе Реестр контейнеров и пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра доступно участникам компании с ролью Администратора.
- Сервис - после перехода в Панель администратора, необходимо перейти в разделе Реестр пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра доступно только Администраторам сервиса.
Все пакеты, загруженные на уровень сервиса, доступны каждому пользователю в общем разделе Реестр пакетов.
После нажатия кнопки Новый репозиторий реестра появится выпадающий список, в котором необходимо выбрать тип нового репозитория.
Локальный репозиторий реестра
Представляет собой репозиторий, в который можно загружать собственные пакеты или артефакты. Для создания необходимо указать:
- Тип пакетов - конкретный тип пакетов, которые будут доступны для загрузки в репозиторий.
- Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ
-
и длиной не более 64 символов. - Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
- Разрешение анонимного доступа - определяет доступность скачивания пакетов транспортным способом из репозитория пользователям без доступа к данному репозиторию.
- Разрешение удаления пакетов - определяет доступность удаления любых пакетов внутри данного репозитория.
- Тип перезаписи пакетов - определяет доступность перезаписи уже существующих пакетов внутри данного репозитория.
- Ключевая пара GPG - необходима для подписи Maven и Debian пакетов. Необязательное поле.
Проксирующий репозиторий реестра
Представляет собой посредника, к которому можно обращаться для скачивания пакетов из внешних репозиториев. Для создания необходимо указать:
- Тип пакетов - конкретный тип пакетов, которые будут доступны для проксирования. Для проксирующего репозитория возможно выбрать только следующие типы пакетов: Maven, NPM, PyPi, NuGet, Container.
- Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ
-
и длиной не более 64 символов. - Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
- URL - ссылка на внешний ресурс, куда будут проксироваться запросы. Например,
https://index.docker.io
. - Имя пользователя и Пароль / токен доступа - данные для авторизации во внешнем репозитории. Для проверки соединения доступна соответствующая кнопка.
- Разрешение хранения артефактов - определяет будут ли артефакты, полученные из внешних репозиториев сохранены в кэше. Ознакомиться подробнее с работой кеша можно здесь
- Время жизни неиспользуемых артефактов - определяет количество часов, которое артефакт будет храниться в кэше с момента последнего скачивания. Значение
0
указывает на отсутствие ограничения. - Период кэширования метаданных артефакта - количество секунд для кэширования файлов метаданных перед проверкой новых версий на удаленном сервере. Значение
0
указывает на отсутствие кэширования. - Офлайн-режим - определяет возможность получения артефактов только из локального кэша.
Хранение спроксированных артефактов
Если у проксирующего репозитория реестра включена опция Разрешения хранения артефактов, то все артефакты, спроксированные из внешних реестров будут сохранены в локальном кэше. Для сохранения будет создан дополнительный репозиторий с именем, образованным от имени проксирующего репозитория - <proxy-repository-name>-cache
.
Данный вид репозитория невозможно Удалить. Вместо этого необходимо перейти к редактированию родительского проксирующего репозитория и отключить опцию Разрешения хранения артефактов. Настройка работы кэширования осуществляется через настройку родительского проксирующего репозитория.
Виртуальный репозиторий реестра
Позволяет выстроить цепочку из других репозиториев реестра любого типа для получения доступа к артефактам через единый URL. Для создания необходимо указать:
- Тип пакетов - только репозитории с данным типом пакетов будут доступны для построения цепочки.
- Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ
-
и длиной не более 64 символов. - Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
- Запросы к проксирующим репозиториям - определяет могут ли запросы к проксирующим репозиториям обращаться во внешний реестр или будет доступно только получение артефактов из кэша. Настройка доступна только, если тип пакетов - Maven, NPM, PyPi, NuGet, Container.
- Репозитории - список репозиториев, которые будут включены в виртуальный репозиторий в указанном порядке. При запросе артефактов, виртуальный репозиторий всегда ищет их в следующем порядке: все выбранные локальные репозитории в указанном порядке, затем проксирующие, после — виртуальные. Для выбора доступны все репозитории, стоящие выше по иерархии. Например, при создании репозитория на уровне проекта, для выбора будут доступны репозитории этого проекта, родительской компании (при условии, что проект находится во владении этой компании) и всего сервиса.
- Репозиторий развертывания - локальный репозиторий, в котором будут сохранены артефакты, при их загрузке в данный виртуальный репозиторий. Можно выбрать только репозиторий сущности (проект, компания или сервис), в которой создается данный виртуальный репозиторий.
Публикация и скачивание артефактов
Участнику проекта или компании с ролью не меньше Разработчика доступна публикация артефактов в созданные локальные репозитории, а также виртуальные с выбранным Репозиторием развертывания. Скачивание артефактов доступно любому пользователю, имеющему доступ к репозиторию реестра. Публикация и скачивание артефактов возможна как через веб-интерфейс, так и транспортным способом.
Веб-интерфейс
Для публикации артефактов через веб-интерфейс необходимо перейти на страницу Репозиториев реестра и нажать кнопку Загрузить. После выбора целевого репозитория в открывшемся окне появятся поля, заполнение которых необходимо для загрузки артефакта. В зависимости от типа пакетов, который указан у выбранного репозитория, набор полей будет отличаться. После заполнения полей и выбора файла необходимо нажать кнопку Загрузить для завершения публикации артефакта.
Целевой путь
По умолчанию, загрузка через веб-интерфейс происходит как артефакт конкретного типа пакетов - путь до загружаемого артефакта формируется, основываясь на заполненных полях и мета-информации выбранного файла. Для загрузки артефакта с конкретным путем необходимо воспользоваться Целевым путем - снять галочку с опции загрузки файла как артефакт конкретного типа пакета и указать в разблокированном поле требуемый путь.
Пример работы Целевого пути.
При загрузке файла archive.tgz в локальный репозиторий repository-name с типом пакетов Generic указывается Название пакета - file-name и его Версия - 1.0.0. При загрузке как артефакт Generic выбранный файл будет доступен по пути: repository-name/file-name/1.0.0/archive.tgz. Для загрузки артефакта по пути folder/build.tar.gz необходимо указать данную строку (вместе с именем файла) в поле Целевой путь.
Транспортный метод
Для взаимодействия с репозиториями транспортным методом, необходимо получить транспортный токен GitFlic. С инструкцией по получению токена можно ознакомиться на странице.
В зависимости от типа пакетов репозитория, действия, необходимые для выполнения публикации или загрузки транспортным методом, различаются. Для получения инструкций необходимо перейти на страницу Репозиториев реестра, нажать кнопку Установить и выбрать репозиторий. Для применения команд необходимо заполнить поля, обрамленные угловыми скобками, например <transport token>
необходимыми значениями. Вся информация, необходимая для загрузки, находится на странице описания артефакта, которую можно открыть, выбрав артефакт в файловом дереве на общей странице Репозиториев реестра.
Подробнее с общими принципами работы пакетных менеджеров и особенностями их работы в реестре GitFlic возможно на этой странице.
Удаление артефактов и репозиториев
Удаление репозиториев доступно пользователям с ролью не меньше Администратора в родительских сущностях. Выбрав нужный репозиторий необходимо нажать кнопку Удалить, выбрать опцию Удалить репозиторий и подтвердить удаление введением контрольной строки.
Удаление отдельных файлов, папок, версий артефактов или содержимого целиком доступно пользователям с ролью не меньше Разработчика в родительских сущностях. Выбрав нужную сущность необходимо нажать кнопку Удалить, выбрать подходящую опцию удаления и подтвердить удаление.
Удаленные файлы со всем содержимым будут перемещены в Корзину, которая расположена внизу файлового дерева. Если файл находится в корзине более 7 дней, то он автоматически удаляется окончательно. Для моментального удаления доступна функция Очистить корзину. Изменить стандартное время нахождения файлов в корзине можно при помощи параметра gitflic.atlas.trash_can.lifetime
в конфигурационном файле application.properties.