Skip to content

Allure reports without running an Allure server

Allure's report is gorgeous — and traditionally trapped behind allure serve on someone's laptop, or a self-hosted server you now maintain. Generate the static report, ship the folder, done.

The artifact dead-end

allure serve spins up a local web server — useless for the teammate who just wants to see the failures. The 'proper' answer is hosting Allure Server or bolting S3 + Lambda + auth together, which is a lot of infrastructure for a test report.

But allure generate already emits a static site. Everything the server does for viewing, a plain static host does better — faster and with nothing to maintain.

Two lines to a live link

Generate the report like you already do, then hand the folder to the action:

Generate the report

allure generate allure-results -o allure-report --clean

.github/workflows/ci.yml

- uses: bitgate/ship-page-action@v1
  if: always()
  with:
    path: allure-report/

Omit path entirely and the action auto-detects allure-report/ on its own. The URL lands in the job summary — add comment: true and it lands on the pull request too.

What you get

  • Suites, categories, history tabs and attachments render exactly as generated — the folder is served as-is
  • Works for every Allure adapter — JUnit, TestNG, pytest, Playwright, Cucumber — they all emit the same static report
  • Omit path entirely — the action auto-detects allure-report/

Questions

Does the history/trend tab work?

The trend uses data baked into allure-results at generation time. Keep a history/ folder between runs (cache it in CI) and allure generate includes it — the deployed report shows the full trend.

Can I deploy from Jenkins or GitLab instead of GitHub Actions?

Yes — the action is GitHub-only, but the API is one curl. Zip the folder and POST it to https://ship.page/deploy; see /docs/ci-curl for the recipe.

What about large result sets?

Anonymous drops take up to 500 files; an API key raises that to 900, and chunked uploads go to 10,000 — enough for very large suites.

Try it on your next run

Anonymous deploys need no account and no key — paste the step, get a link. When you want stable URLs that redeploy in place, an API key and a name are all it takes.