Jekyll's _site/ folder is the deploy — ship it
bundle exec jekyll build renders your whole site into _site/ — the exact artifact GitHub Pages would serve. You can put it on a URL without the Pages machinery.
Drop your Jekyll report here — get a live link
.zip, folder, or single .html — free, no account, live for 7 days.
The artifact dead-end
Jekyll's default hosting story is GitHub Pages: pinned gem versions, a branch or workflow, one site per repo. Previewing a draft post shouldn't require any of that.
Local jekyll serve shows you the site on localhost:4000 — useless for the person you want feedback from.
Two lines to a live link
Build your output like you already do, then hand the folder to the action:
Build the site
bundle exec jekyll build.github/workflows/ci.yml
- uses: bitgate/ship-page-action@v1
if: always()
with:
path: _site/Or with plain curl — no account needed
cd _site && zip -qr - . | curl -fsS -X POST https://ship.page/deploy \
-H "Content-Type: application/zip" \
--data-binary @- | jq -r .urlpath: _site/ 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
- _site/ deploys as-is — permalinks, pagination and assets resolve at the drop root
- One curl from your shell; the action deploys path: _site/ from CI on every push
- Anonymous drops expire after 7 days — draft previews clean themselves up
Questions
What about baseurl and url config?
Leave baseurl empty (the default) — drops mount at a subdomain root, exactly what Jekyll assumes. A custom baseurl like /blog would have to exist as a path under the drop URL.
Do the github-pages gem constraints apply?
No — build with whatever gems you use locally. _site/ is static output; there are no Pages runtime constraints here.
Can the site stay up permanently?
On a paid plan, a named drop with ttl set to never expire gives the site a permanent URL you control, redeployed by CI 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.