Настройка Swift Package Registry

OSA Proxy поддерживает сканирование списков релизов и ZIP-архивов Swift Package Registry.

Репозиторий Tuist

Репозиторий Tuist пока не поддерживается. Его поддержка запланирована на следующий патч OSA Proxy.

Настройка OSA Proxy

swift:
  enabled: true
  repository:
    - name: swift
      registry: https://artifactory.example.com/artifactory/api/swift/swift-remote
      scan-manifest: true
      scan-package: true
      remove-blocked-versions: false
      work-mode: strict_wait

Параметр scan-manifest включает проверку списка релизов пакета, а scan-package — проверку ZIP-архива конкретного релиза перед скачиванием.

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

Для примера маршрут OSA Proxy доступен по адресу https://osa-proxy.example.com/swift:

swift package-registry set --global \
  https://osa-proxy.example.com/swift

С флагом --global настройка применяется ко всем проектам пользователя и сохраняется в ~/.swiftpm/configuration/registries.json. Чтобы сохранить настройку в самом проекте и передать её команде через Git, выполните команду без --global и добавьте .swiftpm/configuration/registries.json в репозиторий.

По умолчанию SwiftPM использует registry только для зависимостей, объявленных по package identity. Зависимости вида .package(url: ...) продолжают скачиваться из Git и обходят OSA Proxy. Чтобы при resolution заменять доступные SCM-зависимости пакетами из registry, используйте:

swift package resolve --replace-scm-with-registry

Если пакет отсутствует в upstream registry, SwiftPM не сможет заменить соответствующую Git-зависимость. Для гарантированного использования registry объявляйте зависимость через .package(id: "scope.package-name", ...).

SwiftPM принимает HTTPS URL в команде настройки. Для локального HTTP endpoint используйте флаг --allow-insecure-http; не редактируйте registries.json вручную:

swift package-registry set --global --allow-insecure-http \
  http://localhost:8080/swift

После настройки можно выполнить resolution или добавить зависимость обычными командами SwiftPM.

Режим remove-blocked-versions: false

При remove-blocked-versions: true, который используется по умолчанию, OSA Proxy удаляет заблокированную версию из списка релизов.

При false версия остаётся в списке, но получает стандартное поле Swift Package Registry problem со статусом 410. В описании проблемы указывается имя блокирующей политики CodeScoring. SwiftPM считает такой релиз недоступным, исключает его из resolution и выбирает следующую подходящую версию. Отдельная policy на стороне клиента, как для Hex, не требуется.

Уже зафиксированные версии

Изменение списка релизов влияет на новый resolution. Чтобы проверить выбор другой версии, убедитесь, что заблокированная версия не закреплена в Package.resolved, или выполните проверку в чистом проекте.

Файл Package.swift для уже выбранной конкретной версии проходит через OSA Proxy без отдельного запроса в CodeScoring. Проверка содержимого релиза выполняется при запросе ZIP-архива, если включён scan-package.

Страница была полезна?