Allure Report Storage: как настроить своё хранилище отчётов

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"}'export default {
...
historyLimit: 50,
};В команде нужно заменить три параметра:
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 давно чувствовало потребность в таком хранилище и создавало свои решения — теперь же есть и официальный ответ.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.