Работа с Alpine
CodeScoring.Save поддерживает репозитории Alpine (APK), совместимые со стандартным клиентом apk:
- proxy-репозиторий — кэширующее зеркало внешнего APK-репозитория;
- hosted-репозиторий — хранилище собственных пакетов
.apkс автоматическим обновлениемAPKINDEX.tar.gz.
Создание репозитория
В веб-интерфейсе откройте проект, нажмите Create repository, выберите Format: Alpine / APK и Type: Proxy или Hosted. Общие поля описаны в разделе Управление репозиториями.
Proxy-репозиторий
В Proxy URL укажите адрес зеркала, например https://dl-cdn.alpinelinux.org/alpine. В Cache TTL, seconds задайте время обновления кэша метаданных.
Создание через API:
Hosted-репозиторий
Настройка клиента
Добавьте адреса Save в /etc/apk/repositories, указав ветку Alpine и компонент:
Замените v3.24 на ветку вашей системы. Архитектуру (x86_64, aarch64 и т. д.) клиент добавляет к URL сам. Чтобы все загрузки шли через Save, замените исходные адреса зеркал в /etc/apk/repositories.
Если Proxy URL уже содержит ветку или компонент, не повторяйте их в клиентском URL. Например, для upstream https://dl-cdn.alpinelinux.org/alpine/v3.24/main строка подключения заканчивается на /apk-proxy.
Специальные символы в логине и пароле в URL нужно URL-кодировать. Для CI/CD можно использовать robot-аккаунт: логин sa$<robot-name> ($ в URL — %24), пароль — API-ключ. Подробнее — в разделе Аутентификация.
Доверие к ключу репозитория
Proxy. Save сохраняет подписи upstream: для официального зеркала Alpine используются стандартные ключи из пакета alpine-keys.
Hosted. Если на сервере включена подпись метаданных (METADATA_SIGNING_ENABLED), перед подключением репозитория скачайте его публичный ключ:
Сохраните имя файла, которое отдаёт сервер: apk находит ключ по этому имени. Готовая команда также доступна в Useful snippets на странице репозитория. Для hosted-репозитория без подписи используйте apk update --allow-untrusted и apk add --allow-untrusted <package>.
Публикация пакетов в hosted-репозиторий
Загрузите пакет по пути <branch>/<component>/<architecture>/<name>-<version>.apk:
Save берёт имя и версию из пакета. Имя файла и архитектура в пути должны совпадать с данными пакета. Пакеты noarch загружаются в каталоги конкретных архитектур, например x86_64 и aarch64, отдельно для каждой нужной архитектуры. Повторная загрузка по тому же пути возвращает 409.
Индекс обновляется автоматически в течение нескольких секунд. Подключите /apk-hosted/v3.24/main в /etc/apk/repositories, настройте доверие к ключу и выполните:
Устранение неполадок
Проверить доступность индекса для нужной ветки, компонента и архитектуры:
Если пакет ещё не виден клиенту, дождитесь обновления индекса и повторите apk update. При ошибке доверия проверьте, что ключ репозитория установлен в /etc/apk/keys под исходным именем.
