Настройка Ivy (SBT / Apache Ivy)

OSA Proxy поддерживает работу с репозиториями формата Apache Ivy, которые широко используются в проектах на Scala и системах сборки sbt. Сервис сканирует скачиваемые артефакты и проверяет их на соответствие политикам безопасности.

Настройка в osa-proxy.yml

ivy:
  enabled: true
  repository:
    - name: ivy
      registry: https://scala.jfrog.io/artifactory/ivy-releases
      scan-package: true
      work-mode: strict_wait
      layout: sbt-default

Параметры репозитория

ПараметрОписание
nameИмя репозитория. Становится первым сегментом пути URL: https://osa-proxy.example.com/ivy/.
registryURL upstream-реестра Ivy.
scan-packageВключает сканирование скачиваемых файлов пакетов (.jar, архивов).
work-modeРежим работы (strict_wait, moderate и др.).
layoutШаблон структуры путей репозитория. Обязателен при scan-package: true. Укажите встроенный sbt-default или ivy-default либо имя пользовательского шаблона из секции layouts.

Шаблоны путей (Layouts)

Для проверки пакетов (scan-package: true) OSA Proxy должен определить координаты компонента по пути к файлу. Поэтому для такого репозитория необходимо явно выбрать шаблон в параметре layout. Готовые шаблоны уже встроены в OSA Proxy, и добавлять их в корневую секцию layouts не нужно:

  • sbt-default — стандартная структура sbt с поддержкой параметров scalaVersion и sbtVersion;
  • ivy-default — стандартная структура Apache Ivy.

Пользовательские шаблоны layouts

Корневая секция layouts нужна только для нестандартной структуры каталогов. Объявите в ней пользовательский шаблон, а затем укажите его имя в ivy.repository[*].layout:

layouts:
  custom-sbt: "[organisation]/[module]/(scala_[scalaVersion]/)[revision]/[type]s/[artifact].[ext]"

ivy:
  enabled: true
  repository:
    - name: my-ivy
      registry: https://ivy.example.com
      layout: custom-sbt

Шаблон должен содержать маркеры организации ([organisation], [org] или [orgPath]), модуля ([module]) и версии ([revision] или [baseRev]).

Подключение sbt

Чтобы направить загрузку зависимостей через OSA Proxy, добавьте resolver в build.sbt:

resolvers += Resolver.url(
  "osa-proxy-ivy",
  url("https://osa-proxy.example.com/ivy/")
)(Resolver.ivyStylePatterns)

Поведение блокировки

При обращении клиента OSA Proxy:

  1. Сопоставляет путь запроса с настроенным layout для извлечения организации, имени модуля и версии компонента.
  2. Проверяет скачиваемый артефакт в CodeScoring (при scan-package: true).
  3. Если компонент нарушает политики безопасности, OSA Proxy блокирует скачивание и возвращает настроенный HTTP-код (по умолчанию 403).
Страница была полезна?