Настройка Swift Package Registry
OSA Proxy поддерживает сканирование списков релизов и ZIP-архивов Swift Package Registry.
Репозиторий Tuist пока не поддерживается. Его поддержка запланирована на следующий патч OSA Proxy.
Настройка OSA Proxy
Параметр scan-manifest включает проверку списка релизов пакета, а scan-package — проверку ZIP-архива конкретного релиза перед скачиванием.
Подключение SwiftPM
Для примера маршрут OSA Proxy доступен по адресу 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, используйте:
Если пакет отсутствует в upstream registry, SwiftPM не сможет заменить соответствующую Git-зависимость. Для гарантированного использования registry объявляйте зависимость через .package(id: "scope.package-name", ...).
SwiftPM принимает HTTPS URL в команде настройки. Для локального HTTP endpoint используйте флаг --allow-insecure-http; не редактируйте registries.json вручную:
После настройки можно выполнить 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.
