Reference

Deploying

Ship the site to GitHub Pages, Netlify, Vercel or any static host.

Updated Sep 1, 2026 Edit this page

The build output is a plain static site in _site/ — host it anywhere.

jekyll-seo-tag, jekyll-sitemap and jekyll-feed are all allowed, and Actions lets you use Jekyll 4.

The workflow already ships in the theme at .github/workflows/pages.yml — if you forked or cloned, you have it. There is one manual step: in Settings → Pages, set Source to GitHub Actions. Nothing deploys until you do.

name: Deploy site

on:
  push:
    branches: [main]
  workflow_dispatch:          # re-deploy from the Actions tab

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: pages
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: "3.3"
          bundler-cache: true
      - id: pages
        uses: actions/configure-pages@v5
      - name: Build
        run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
        env:
          JEKYLL_ENV: production
      - uses: actions/upload-pages-artifact@v3
        with:
          path: _site

  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - id: deployment
        uses: actions/deploy-pages@v4

Project site sub-path

If the site lives at https://user.github.io/repo/, set:

url: "https://user.github.io"
baseurl: "/repo"

All theme links use relative_url, so they resolve correctly.

The workflow also passes --baseurl from configure-pages, which overrides _config.yml at build time. That means a deploy still works if you forget to update baseurl after renaming the repository — but your local preview would then be wrong, so keep _config.yml correct anyway.

Netlify / Vercel / Cloudflare Pages

  • Build command: bundle exec jekyll build
  • Publish directory: _site
  • Environment: JEKYLL_ENV=production, RUBY_VERSION=3.3

Custom domain

Add a CNAME file with your domain, or configure it in your host’s dashboard, and set url: to the final https:// origin.