Skip to content

Astro's dist/ is a website — give it a URL

Astro's default static output already emits a plain static site in dist/. No edge adapter, no platform lock-in — just files. Push the folder to ship.page and it's a link.

Drop your Astro report here — get a live link

free, no account, live for 7 days.

The artifact dead-end

Astro's deploy docs read like a vendor catalog: every platform wants your repo connected and an account created. For a quick preview of a content branch, that's all overhead.

The static output was the point of choosing Astro. dist/ needs a URL, not a pipeline.

Two lines to a live link

Build your output like you already do, then hand the folder to the action:

Build the site

npm run build

.github/workflows/ci.yml

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

Or with plain curl — no account needed

cd dist && zip -qr - . | curl -fsS -X POST https://ship.page/deploy \
  -H "Content-Type: application/zip" \
  --data-binary @- | jq -r .url

path: dist/ deploys exactly what the tool wrote — no detection to configure. The link goes in the job summary — add comment: true and it lands on the pull request too.

What you get

  • Zero adapter config — the default static build deploys untouched, islands and content collections included
  • Hashed assets resolve at the drop root exactly like astro preview serves them locally
  • Anonymous deploys are one curl; the GitHub Action turns it into a per-PR preview with comment: true

Questions

Do I need an SSR adapter?

No — this recipe covers output: 'static', the default. SSR output needs a server runtime; prerender the routes you want to share and deploy those files instead.

How is this different from astro preview?

astro preview serves dist/ on localhost. This puts the exact same folder on a public URL anyone can open.

Can I keep a preview per content branch?

Yes: name: docs-${{ github.ref_name }} plus an sp_ API key redeploys one stable URL per branch on every push.

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.

Need to share the report with someone outside GitHub? How to share a GitHub Actions artifact without a login.