Deploying the www Folder on GitHub Pages

GitHub Pages doesn’t support pushing the www folder from the main branch by default. You can do that, however, using GitHub Actions.

# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ["main"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Single deploy job since we're just deploying
  deploy:
    environment:
      name: github-pages
      url: $
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Pages
        uses: actions/configure-pages@v4
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          # Upload www directory
          path: './www'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

Note that this is for fully static sites. This will not run Jekyll and will not convert markdown files to html.

Write by Joel Dare on July 17, 2024 and last updated on March 17, 2025.


Joel's Newsletter

Get a monthly digest of what I'm up to.

Subscribe by Email