Работа с Raw

CodeScoring.Save хранит произвольные файлы в hosted-репозиториях формата Raw: архивы, бинарные сборки, документацию и другие артефакты без пакетного менеджера. Загрузка и скачивание выполняются обычными HTTP-запросами.

Создание репозитория

В веб-интерфейсе откройте проект, нажмите Create repository, выберите Format: Raw / Generic и Type: Hosted. Общие поля описаны в разделе Управление репозиториями.

Тот же репозиторий можно создать через API:

curl -X POST https://save.example.com/api/v1/repos \
  -H "Content-Type: application/json" \
  -u "<username>:<password>" \
  -d '{
    "project": "backend",
    "name": "raw-hosted",
    "format": "raw",
    "repository_type": "hosted"
  }'

Загрузка файлов

Кнопки загрузки в веб-интерфейсе нет: файлы загружаются только по HTTP. Файл загружается запросом PUT на путь, по которому он будет доступен в репозитории:

curl -u "<username>:<password>" \
  -T file.bin \
  "https://save.example.com/cs-save/raw/<project>/raw-hosted/releases/file.bin"

Имя пакета, версия и архитектура

При загрузке можно задать метаданные query-параметрами в URL:

ПараметрНазначениеЕсли не задан
nameИмя пакета, например my-packageИспользуется имя файла
versionВерсия пакета, например 1.2.3Версию назначает сервер
architectureАрхитектура, например x86_64Остаётся неуказанной

Все параметры необязательны. Версия задаётся строкой и не обязана соответствовать SemVer. Метаданные не меняют путь файла.

Binary PUT:

curl -u "<username>:<password>" -X PUT \
  "https://save.example.com/cs-save/raw/<project>/raw-hosted/releases/file.bin?name=my-package&version=1.2.3&architecture=x86_64" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @file.bin

Multipart:

curl -u "<username>:<password>" -X PUT \
  "https://save.example.com/cs-save/raw/<project>/raw-hosted/releases/file.bin?name=my-package&version=1.2.3&architecture=x86_64" \
  -F "file=@file.bin"

В multipart-запросе метаданные также передаются в URL, а файл — в поле file. Значения параметров нужно URL-кодировать: например, team/my-package → team%2Fmy-package, 1.2.3+build.7 → 1.2.3%2Bbuild.7. Пустые и повторяющиеся параметры возвращают 400.

Повторная загрузка

Хранение истории зависит от настройки сервера enable_versioning для Raw. При включённой истории повторная загрузка по тому же пути с той же версией возвращает 409. При выключенной истории PUT заменяет текущий файл. Зафиксированный (Lock artifact) файл перезаписать нельзя.

Robot-аккаунты в CI

Для CI/CD используйте Basic Auth с robot-аккаунтом: логин sa$<robot-name>, пароль — API-ключ. Подробнее — в разделе Аутентификация.

Скачивание файлов

В веб-интерфейсе выберите файл в дереве репозитория и нажмите Download в правой панели.

По HTTP используется тот же путь без параметров загрузки:

curl -u "<username>:<password>" \
  -o file.bin \
  "https://save.example.com/cs-save/raw/<project>/raw-hosted/releases/file.bin"

Проверка метаданных

Ответ на загрузку содержит имя, версию, архитектуру (если указана), путь, размер и контрольную сумму файла. Сохранённые артефакты можно найти через API с фильтрацией по имени и версии:

curl -u "<username>:<password>" \
  "https://save.example.com/api/v1/artifacts?repository_id=<repository-id>&name=my-package&version=1.2.3"

<repository-id> — числовой ID репозитория из ответа API на его создание.

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