Deploy via GitHub Pages
Deploy anywhere static. For GitHub Pages: Settings → Pages → Source = GitHub Actions, then:
# .github/workflows/docs.yml
name: docs
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
publish:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npm ci
- run: npx notabene build --public
--site https://${{ github.repository_owner }}.github.io
--base /${{ github.event.repository.name }}
--out ./_site
- uses: actions/upload-pages-artifact@v3
with: { path: ./_site }
- id: deployment
uses: actions/deploy-pages@v4
Notes:
- With
publish: { site, base }set in your config, the--site/--baseflags can be dropped entirely. - Hosting at a custom domain or a user/org root site? Drop
--baseand set--siteto your domain. - The artifact ships a
.nojekyll, so_astro/assets survive even classic gh-pages-branch hosting. npm i -D pagefindin your repo and this exact workflow ships full-text search too —npm ciinstalls it, the build picks it up. Nothing to change here.- This documentation site is deployed by exactly this workflow — see it in the repo.
notabene