Перейти к содержанию

Репозитории реестра

Функционал доступен в Enterprise и Atlas версиях.


Репозитории реестра - функция платформы, являющаяся логическим продолжением функции реестра контейнеров и пакетов. В отличие от общего реестра, в рамках которого, например, Maven-пакеты, Docker-контейнеры и артефакты, сохраненные как пакеты Generic, находятся в одном общем реестре, репозитории реестра хранят в себе артефакты только одного определенного типа. Перечисленные ниже особенности позволяют выстроить любую необходимую структуру хранения файлов:

  • обращение к артефактам, в том числе, во внешних реестрах
  • создания репозиториев на уровне проекта, компании или всего сервиса
  • отсутствие ограничений на число самих репозиториев

Репозитории реестра

Создание репозитория реестра

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

  • Проект - после создания проекта, необходимо перейти в разделе Реестр контейнеров и пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра доступно участникам проекта с ролью не меньше Администратора.
  • Компания - после создания компании, необходимо перейти в разделе Реестр контейнеров и пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра доступно участникам компании с ролью Администратора.
  • Сервис - после перехода в Панель администратора, необходимо перейти в разделе Реестр пакетов во вкладку Репозитории реестра. Создание новых Репозиториев реестра по умолчанию доступно только Администраторам сервиса.

Доступ к репозиториям реестра на уровне всего сервиса

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

После нажатия кнопки Новый репозиторий реестра появится выпадающий список, в котором необходимо выбрать тип нового репозитория.

Локальный репозиторий реестра

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

  • Тип пакетов - конкретный тип пакетов, которые будут доступны для загрузки в репозиторий.
  • Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ - и длиной не более 64 символов.
  • Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
  • Разрешение анонимного доступа - определяет доступность скачивания пакетов транспортным способом из репозитория пользователям без доступа к данному репозиторию.
  • Разрешение удаления пакетов - определяет доступность удаления любых пакетов внутри данного репозитория.
  • Тип перезаписи пакетов - определяет доступность перезаписи уже существующих пакетов внутри данного репозитория.
  • Ключевая пара GPG - необходима для подписи Maven и Debian пакетов. Необязательное поле.

Создание локального репозитория реестра

Проксирующий репозиторий реестра

Представляет собой посредника, к которому можно обращаться для скачивания пакетов из внешних репозиториев. Для создания необходимо указать:

  • Тип пакетов - конкретный тип пакетов, которые будут доступны для проксирования. Для проксирующего репозитория возможно выбрать только следующие типы пакетов: Maven, NPM, PyPi, NuGet, Container, Debian, Helm, Go.
  • Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ - и длиной не более 64 символов.
  • Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
  • URL - ссылка на внешний ресурс, куда будут проксироваться запросы. Например, https://index.docker.io.
  • Имя пользователя и Пароль / токен доступа - данные для авторизации во внешнем репозитории. Для проверки соединения доступна соответствующая кнопка.
  • Разрешение хранения артефактов - определяет будут ли артефакты, полученные из внешних репозиториев сохранены в кэше. Ознакомиться подробнее с работой кеша можно здесь
  • Время жизни неиспользуемых артефактов - определяет количество часов, которое артефакт будет храниться в кэше с момента последнего скачивания. Значение 0 указывает на отсутствие ограничения.
  • Период кэширования метаданных артефакта - количество секунд для кэширования файлов метаданных перед проверкой новых версий на удаленном сервере. Значение 0 указывает на отсутствие кэширования.
  • Офлайн-режим - определяет возможность получения артефактов только из локального кэша.

Создание проксирующего репозитория реестра

Хранение спроксированных артефактов

Если у проксирующего репозитория реестра включена опция Разрешения хранения артефактов, то все артефакты, спроксированные из внешних реестров будут сохранены в локальном кэше. Для сохранения будет создан дополнительный репозиторий с именем, образованным от имени проксирующего репозитория - <proxy-repository-name>-cache.

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

Виртуальный репозиторий реестра

Позволяет выстроить цепочку из других репозиториев реестра любого типа для получения доступа к артефактам через единый URL. Для создания необходимо указать:

  • Тип пакетов - только репозитории с данным типом пакетов будут доступны для построения цепочки.
  • Название репозитория - будет отображаться в общем списке репозиториев. Может содержать цифры, латинские буквы, символ - и длиной не более 64 символов.
  • Описание репозитория - любая информация о репозитории, которая может быть полезна. Может содержать до 600 символов. Необязательное поле.
  • Запросы к проксирующим репозиториям - определяет могут ли запросы к проксирующим репозиториям обращаться во внешний реестр или будет доступно только получение артефактов из кэша. Настройка доступна только, если тип пакетов - Maven, NPM, PyPi, NuGet, Container, Debian, Helm, Go.
  • Репозитории - список репозиториев, которые будут включены в виртуальный репозиторий в указанном порядке. При запросе артефактов, виртуальный репозиторий всегда ищет их в следующем порядке: все выбранные локальные репозитории в указанном порядке, затем проксирующие, после — виртуальные. Для выбора доступны все репозитории, стоящие выше по иерархии. Например, при создании репозитория на уровне проекта, для выбора будут доступны репозитории этого проекта, родительской компании (при условии, что проект находится во владении этой компании) и всего сервиса.
  • Репозиторий развертывания - локальный репозиторий, в котором будут сохранены артефакты, при их загрузке в данный виртуальный репозиторий. Можно выбрать только репозиторий сущности (проект, компания или сервис), в которой создается данный виртуальный репозиторий.

Создание виртуального репозитория реестра

Публикация и скачивание артефактов

Участнику проекта или компании с ролью не меньше Разработчика доступна публикация артефактов в созданные локальные репозитории, а также виртуальные с выбранным Репозиторием развертывания. Скачивание артефактов доступно любому пользователю, имеющему доступ к репозиторию реестра. Публикация и скачивание артефактов возможна как через веб-интерфейс, так и транспортным способом.

Веб-интерфейс

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

Целевой путь

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

Пример работы Целевого пути.

При загрузке файла 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.

Права доступов к репозиториям реестра

По умолчанию каждому пользователю доступен просмотр и скачивание артефактов из репозиториев реестра на уровне Сервиса. Создание репозиториев и загрузка артефактов доступны только Администраторам сервиса. Для переопределения прав необходимо включить настройку в панели администратора и создать Доступ.

Влияние доступов

Доступы репозиториев реестра способны переопределить поведение только для репозиториев уровня сервиса.

Только Администратор сервиса может создать Доступ. После перехода в Панель администратора, раздел Настройки необходимо выбрать вкладку Доступы репозиториев реестра и нажать кнопку Создать доступ.

  • Название доступа - Название, отображаемое в списке всех доступом.
  • Путь до репозитория - Шаблон в формате antMatchers пути до репозиториев, на доступ к которым будет влиять созданное правило.
Примеры шаблонов пути

Примеры шаблонов: my-*, team-?, **-proxy
* - множество символов. Например my-* совпадет с my-generic, my-maven-2. Не совпадет с my/maven/test.
? - один символ. Например team-? совпадет с team-1, team-A. Не совпадет с team-frontend, team/backend.
** - множество символов и слешей. Например **-proxy совпадет с gtflc-1-proxy, gtflc-12/test-proxy.

  • Предоставить доступ - Список пользователей, для которых стандартное поведение будет переопределено.
  • Доступные действия - Набор действий, которые будут доступны.
Доступные действия
  • Чтение - Просмотр репозиториев и скачивание артефактов.
  • Загрузка - Создание репозиториев и публикация артефактов.
  • Удаление - Удаление репозиториев и артефактов.
  • Управление - Редактирование репозиториев и назначение свойств для работы политик очистки.

После нажатия кнопки Создать доступ, новое правило отобразиться в списке. Для изменения или удаления доступа следует воспользоваться соответствующими кнопками.

Права доступов к репозиториям реестра

Политики очистки

Политика очистки — автоматизированные правила, которые помогают удалять устаревшие, неиспользуемые или ненужные артефакты из репозиториев реестра.

Политики очистки

Создание политики очистки

Создание политики очистки доступно на трех уровнях:

  • Сервис:
    • Создание доступно только администраторам сервиса.
    • Для политик, созданных на этом уровне, доступно наследование в любые компании и проекты.
    • После перехода в Панель администратора, раздел Настройки необходимо выбрать вкладку Настройки политики очистки.
  • Компания:
    • Создание доступно только администраторам компании.
    • Для политик, созданных на этом уровне, доступно наследование в проекты этой компании, в том числе в проекты дочерних команд и подгрупп.
    • После перехода в настройки компании необходимо выбрать вкладку Политики очистки.
  • Проект:
    • Создание доступно только администраторам проекта.
    • После перехода в настройки проекта необходимо выбрать вкладку Политики очистки.

Для создания политики необходимо указать:

Основное

Служебная информация для идентификации конкретной политики:

  • Название - Отображается на странице со списком политик. Может быть длинной до 64 символов и содержать цифры, латинские строчные буквы и символ -.
  • Описание - Необязательное поле с любой вспомогательной информацией.

Область применения политики очистки

Настройки, определяющие набор репозиториев и пакетов, к которым будет применима политика:

  • Включенные проекты и компании - Доступно при создании политики на уровне компании или всего сервиса. Определяет набор проектов и компаний, к которым будет применена данная политика.
  • Тип пакетов - Список типов пакетов, для репозиториев которых будет срабатывать правило очистки.
  • Шаблоны репозиториев реестра - Wildcard шаблоны, определяющие набор репозиториев, на которых политика будет влиять. Поле Исключить шаблоны репозитория реестра позволяет убрать из набора конкретные репозитории.
  • Шаблоны имен пакетов - Wildcard шаблоны, определяющие имена пакетов, на которых политика будет влиять. Поле Исключить пакеты с указанным именем позволяет отсечь определенные пакеты с указанным именем.
Примеры шаблонов

Примеры шаблонов: repository-*, package-gtfl-?
* - множество символов. Например repository-* совпадет с repository-gtfl-1 иrepository-gtfl2.
? - один символ. Например package-gtfl-? совпадет с package-gtfl-1 и package-gtfl-2. Не совпадет с package-gtfl-test.

Область применения политики очистки

Условия политики очистки

Условие нахождения пакетов, которые должны быть удалены. Для выбора доступно одно из трех возможных условий:

  • На основе времени - Имеет два состояния:
    • Пакеты, которые не скачивались в течении - Все пакеты, не скачивавшиеся в течении указанному промежутка времени, будут помечены для удаления.
    • Пакеты старше - Все пакеты, дата загрузки, которых старше указанного промежутка времени, будут помечены для удаления.
  • На основе версии - Указывает количество последних версий, которое необходимо сохранить. Условие смотрит на дату загрузки версии, а не на ее номер.
  • На основе свойства - Свойство это пара ключ-значение, которое может быть добавлено ко всему репозиторию, папке или отдельному пакету. По наличию свойства или его значению, политика способна составить список пакетов подходящих под очистку.

Исключение пакетов

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

Условия политики очистки

Дополнительные настройки

Необязательные поля, уточняющие работу политики:

  • Выражение Cron - График выполнения политики. Минимальное время выполнения политики составляет 6 часов. Изменить значение можно при помощи свойства gitflic.atlas.cleanup-policy.latency-hours в application.properties приложения. Cron-формат поддерживает 5 разрядов: секунды, минута, час, день месяца, месяц, день недели.
  • Максимальная продолжительность запуска - Определяет временной промежуток, дольше которого политика не будет производить очистку. При достижении лимита, процесс удаления прерывается.
  • Удаление минуя корзину - Позволяет удалять пакеты, минуя корзину.

Работа политики очистки

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

Активация политики

Для любого типа запуска политика должна быть Активна. По умолчанию, политика создается в не активном состоянии. Для активации следует воспользоваться переключателем на странице со списком политики. Активностью унаследованной политики возможно управлять только в родительской сущности (компании или панели администратора).

За один запуск политика может очистить до 100000 пакетов. Изменить значение можно при помощи свойства gitflic.atlas.cleanup-policy.deleted-package-limit в application.properties приложения.

Запуски

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

Отчеты

Отчет содержит в себе подробную информацию о запуске политики в формате .csv.

Запуски