GitHub Pages deployment

Publish the portfolio site from your repository.

The project includes a custom GitHub Actions workflow that publishes the static site/ directory. No Node.js, Jekyll or server process is required.

Before publishing, replace any repository placeholder links automatically detected during local preview by pushing the project to your own GitHub repository. On GitHub Pages, the site derives the owner and repository name from the URL.

Create or open the GitHub repository

Upload the complete project, including site/ and .github/workflows/pages.yml, to the default branch.

Enable GitHub Actions as the Pages source

In the repository, open Settings → Pages. Under Build and deployment, select GitHub Actions.

Push a change to the default branch

The Pages workflow validates the entry page, uploads the static site artifact and deploys it to the github-pages environment.

Open the deployed URL

The workflow summary provides the site URL. Project sites normally use https://OWNER.github.io/REPOSITORY/.

Included workflow

Automatic deployment

The workflow follows the current GitHub Pages artifact deployment model.

.github/workflows/pages.yml
name: Deploy GitHub Pages

on:
  push:
    branches: [main]
  workflow_dispatch:

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

jobs:
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v4
        with:
          path: site
      - id: deployment
        uses: actions/deploy-pages@v4
Local preview

Review before publishing

Serve the site from the repository root, then open the local URL.

PowerShell or terminal
python -m http.server 8000 --directory site
# Open http://127.0.0.1:8000