Allure Report всегда не хватало хранилища для отчётов, которое позволяло бы легко работать с историей и смотреть отчёты удалённо — а это сильно облегчило бы определение флаков и анализ трендов.
Чтобы решить эту проблему, сообщество Allure Report создало целую плеяду проектов:
fescobar/allure-docker-service — Docker-контейнер;
kochetkov-ma/allure-server — сервер для хранения отчётов;
simple-elf/allure-report-action — GitHub Action;
andgineer/allure-report — тоже GitHub Action.
На Хабре есть замечательная статья, сравнивающая эти решения, а также самостоятельную публикацию через GitLab Pages. Можно также почитать руководство для pytest и fescobar/allure-docker-service (тоже Хабр) или официальное руководство Allure Report для GitHub Pages и simple-elf/allure-report-action.
Недавно в Allure 3 появился официальный аналог этих проектов — Allure Report Storage, работающий через Docker или Cloudflare Worker. В этом руководстве я покажу, как установить и запустить это хранилище.
1. Подготовка к запуску
Код демонстрации
https://github.com/rattus-aristarchus/self-hosted-storage-demo
Что понадобится
Настройка
Установите Allure 3 и Docker.
Если уже есть проект с Allure 3, используйте его, если нет — скачайте базовый проект с Allure Starter Project и добавьте в него файл настроек Allure 3 allurerc.js:
export default { name: "Отчёты с историей", output: "./allure-report", historyPath: "./test-history/history.jsonl", plugins: { awesome: { import: "@allurereport/plugin-awesome", options: { reportName: "Отчёт для Allure Storage", reportLanguage: "ru", }, }, }, };
2. Запуск хранилища в Docker
Чтобы запустить хранилище в Docker, вам понадобится файл compose.yaml для образа allure/allure-report-storage (уточните номер последней версии на странице образа):
services: app: # Здесь номер версии со страницы образа image: allure/allure-report-storage:v1.1.1 environment: ACCESS_TOKEN: ${ACCESS_TOKEN:-change-me} DATABASE_PATH: /data/reports.sqlite DATA_DIR: /data HOST: 0.0.0.0 # Основная ветка проекта; измените, если она не main MAIN_BRANCH: ${MAIN_BRANCH:-main} PORT: 3000 PUBLIC_URL: ${PUBLIC_URL:-} SECRET: ${SECRET:-change-me-secret} ports: - "3000:3000" restart: unless-stopped volumes: - report-data:/data volumes: report-data:
ACCESS_TOKEN и SECRET — произвольные строки, которые вам нужно придумать самим (в идеале — что-то длинное, что нельзя угадать; подробнее о них в документации проекта). Здесь у этих параметров есть значения по умолчанию, так что файл будет работать, даже если в нём ничего не менять.
Положите файл compose.yaml туда, откуда будете запускать Docker. Команда для запуска обычная:
docker compose up -d
После того как вы запустите контейнер, проверьте, что всё работает:
curl http://localhost:3000/api/ping
Файлы отчётов по умолчанию хранятся локально. При желании можно настроить хранение в S3-совместимом сервисе.
3. Как связать Allure 3 с хранилищем
Хранилище заработало — теперь настало время связать с ним Allure 3. Для этого запросите у хранилища токен следующей командой:
curl -sS -X POST http://localhost:3000/api/token \ -H "Authorization: Bearer access_token_из_файла_compose"
(здесь ACCESS_TOKEN нужно взять из прошлого раздела)
Теперь внесите два изменения в файл конфигурации Allure 3:
добавьте только что сгенерированный токен;
укажите publish: true в настройках плагина, который должен публиковать отчёт.
export default { name: "Отчёт с историей", output: "./allure-report", historyPath: "./test-history/history.jsonl", plugins: { awesome: { import: "@allurereport/plugin-awesome", options: { reportName: "Отчёт", reportLanguage: "ru", // Этот отчёт будет опубликован через Allure Storage publish: true, }, }, }, allureService: { // Только что созданный токен: accessToken: "ars1...", }, };
На этом подготовка закончена. Теперь после каждого запуска тестов Allure 3 будет выгружать отчёты в контейнер, и их можно будет посмотреть по адресу:
http://localhost:3000/reports/tree?repo=имя-вашего-репозитория
Если страница открывается, но отчётов там нет:
убедитесь, что в файле настроек (здесь —
allurerc.js) вы правильно указали название ветки, для которой публикуется отчёт (по умолчанию — main);убедитесь, что запускаете именно Allure 3 (
npx allure run -- "команда запуска тестов").
Страница с отчётами должна выглядеть примерно так:

Здесь под именем ветки указаны все связанные с ней отчёты.
4. Работа с хранилищем
Отчёты в хранилище организованы по названиям репозитория и ветки. И то, и другое определяется автоматически:
если хранилище развёрнуто локально — по имени текущего репозитория и ветки;
если хранилище развёрнуто на одном из поддерживаемых CI-серверов — по переменным среды.
Ветку, из которой берутся отчёты, можно поменять следующей командой:
curl -sS -X POST http://localhost:3000/api/projects/main-branch \ -H "Authorization: Bearer access_token" \ -H "Content-Type: application/json" \ -d '{ "repo": "repo_name", "main_branch": "main_branch_name"}'
В команде нужно заменить три параметра:
access_token — токен из прошлого раздела;
repo_name — имя репозитория;
main_branch_name — имя ветки.
Хранилище не ограничивает срок хранения отчётов, а удалить их можно только вручную. По умолчанию хранилище показывает 10 последних отчётов — чтобы изменить это значение, добавьте в файл настроек строку:
export default { ... historyLimit: 50, };
Чтобы удалить отчёт, выполните команду:
curl -sS -X POST http://localhost:3000/api/report/<report-uuid>/delete \ -H "Authorization: Bearer ars1..."
Обратите внимание, что здесь используется не ACCESS_TOKEN из compose.yaml, а токен, полученный через API хранилища.
5. Что даёт Allure Report Storage
Allure Report Storage — отличное место для централизованного постоянного хранения отчётов, где их удобно смотреть с любой машины. Сообщество Allure Report давно чувствовало потребность в таком хранилище и создавало свои решения — теперь же есть и официальный ответ.