Новый хаб пакетов OpenHub для Оскрипта
Всем привет!
Что нам стоит хаб построить? Нарисуем, будем жить!
Сентябрь этого года выдался богатым на анонсы.
У Оскрипта уже много лет существует репозиторий пакетов hub.oscript.io, и каждый, кто когда-либо использовал команду opm install, обращался к этому хабу. Он прост и прекрасен, однако у него имелся ряд проблем. Когда я пытаюсь вспомнить, в чём именно заключались эти проблемы и почему было принято решение запилить новый хаб, честно говоря, в голову ничего не приходит, кроме «скучных обоев» (привет, BolgenOs).
Так или иначе, был написан openhub — новый хаб пакетов: модный, молодёжный и полностью написанный на Оскрипте. От начала и до конца. С Winow и Autumn, конечно же.
Основные возможности
Итак, что же в нём такого:
Кэширующий прокси или зеркало. Вы можете в пару кликов настроить в своём окружении собственный хаб, сконфигурировать его как прокси для основного хаба и спокойно раздавать доступ к нему на CI, не предоставляя раннерам доступ в интернет.
Разделение пулов. Вы можете создать в рамках одного хаба несколько пулов и ограничить видимость отдельных, скажем, по проектам.
SSO. В хабе предусмотрена поддержка OIDC, поэтому вы можете обеспечить на него доступ через, например, Keycloak или GitLab. При этом работает не только провижнинг пользователей, но и групп.
Trusted publishing. В новом хабе вам не нужно хранить долгоживущий токен, который может быть скомпрометирован.
Новый механизм заявок на публикацию. Теперь вы просто пушите новый пакет в хаб, а мейнтейнерам пула приходит заявка от вашего имени.
Мониторинг состояния хаба. Реализован мониторинг состояния хаба через коннектор к OpenTelemetry (написанный @nixel2007).
Примечание: Здесь есть маленькая проблема — пока OpenTelemetry может нормально работать только тогда, когда нагрузка не очень велика, но я уверен, что скоро всё заработает на полную!
Заключение
На самом деле — писать подобные вещи дико интересно! За это время я разобрался в том, как работает OIDC, что такое доверенная публикация, как работают кэши, а также изучил огромное количество маленьких и не очень интересных деталей, о которых я попробую рассказать в серии ближайших постов.