Source maps

Исходный stack trace вместо минифицированного bundle — при совпадении release и имени файла.

Что хранится где

ДанныеХранилищеКак попадает
Ошибки, события, issuesPostgreSQLSDK → POST /api/ingest
Source mapsS3 (platform или project bucket)POST /api/v1/.../sourcemaps
Пока map не загружен через API, в S3 для проекта ничего не появится — это нормально, ingest ошибок работает независимо.

Требования

  1. S3 — platform S3 сервера (S3_* в .env) или свой bucket в настройках проекта.
  2. release в SDK — semver версии приложения (не git SHA). Совпадает с полем release при загрузке map. SHA деплоя — отдельно: Git-коммит.
  3. filename — имя bundle из stack trace (app.js), не путь к исходнику .ts.

Ключ объекта: {prefix}/{projectId}/sourcemaps/{release}/{filename}

Platform vs свой bucket

РежимОписание
platformS3 из .env сервера DevLogs — используется по умолчанию
projectСвои endpoint, bucket и ключи в настройках проекта — maps не попадают в platform bucket

Переключение S3 в кабинете копирует существующие maps между backends. Удаление проекта или map удаляет объект из соответствующего S3.

Загрузка через REST API

Авторизация — API-ключ из профиля. См. также REST API.

curl — загрузка map
curl -s -X POST "https://dev-logs.ru/api/v1/projects/PROJECT_ID/sourcemaps" \
  -H "Authorization: Bearer dl_live_YOUR_KEY" \
  -F "release=1.2.0" \
  -F "filename=app.js" \
  -F "file=@dist/app.js.map"

Повторная загрузка с тем же release + filename перезаписывает map. Максимальный размер файла — 50 МБ.

CI после сборки

GitLab / GitHub Actions
for map in dist/assets/*.map; do
  base=$(basename "$map" .map)
  curl -sf -X POST "https://dev-logs.ru/api/v1/projects/${DEVLOGS_PROJECT_ID}/sourcemaps" \
    -H "Authorization: Bearer ${DEVLOGS_API_KEY}" \
    -F "release=${CI_COMMIT_TAG:-$CI_COMMIT_SHA}" \
    -F "filename=${base}" \
    -F "file=@${map}" || exit 1
done
ПеременнаяПример
DEVLOGS_URLhttps://dev-logs.ru
DEVLOGS_PROJECT_IDid из кабинета
DEVLOGS_API_KEYdl_live_… из профиля

Release в SDK

javascript
init({
  dsn: "…",
  release: "1.2.0",
  environment: "production",
});

Кабинет

Настройки проекта → Source maps — список загруженных maps. Загрузка только через API; удаление — кнопкой в UI или DELETE API. На странице детали ошибки при наличии map показывается исходный стек с пометкой «source map».