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

—

от автора

Allure Report всегда не хватало хранилища для отчётов, которое позволяло бы легко работать с историей и смотреть отчёты удалённо — а это сильно облегчило бы определение флаков и анализ трендов.

Чтобы решить эту проблему, сообщество Allure Report создало целую плеяду проектов:

На Хабре есть замечательная статья, сравнивающая эти решения, а также самостоятельную публикацию через 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:/datavolumes:  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 -- "команда запуска тестов").

Страница с отчётами должна выглядеть примерно так:

Главная страница Allure Report Storage

Главная страница Allure Report Storage

Здесь под именем ветки указаны все связанные с ней отчёты.

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 давно чувствовало потребность в таком хранилище и создавало свои решения — теперь же есть и официальный ответ.

ссылка на оригинал статьи https://habr.com/ru/articles/1096600/