Host a Jekyll site without the Pages machinery
bundle exec jekyll build renders your whole site into _site/ — the exact artifact GitHub Pages would serve. You can host that folder on a live URL without any of the Pages machinery.
Drop your Jekyll report here — get a live link
.zip, folder, or single .html — free, no account, live for 30 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 30 days — draft previews clean themselves up
- Any theme, any plugin, any Jekyll version — you build locally, so no host-side gem whitelist ever rejects your site
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.
Is there a free way to host a Jekyll site?
Yes — anonymous drops are free with no account: up to 25 MB zipped, live for 30 days. GitHub Pages is also free for permanent public sites; the difference here is zero setup and a preview link that cleans itself up.
How do I share a draft post for review?
Build with jekyll build --drafts so _site/ includes the draft, deploy the folder, and send the link. Anonymous drops expire after 30 days, so review copies clean themselves up.
Related recipes
- Hugo: Share your Hugo site without the hosting song and dance
- Zip upload: Upload a zip, get a URL — that's the whole API
- Convert a Bootstrap page to Tailwind CSS
- CSS to Tailwind converter
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.