name: Build and Deploy

on: 
  push:
    branches:
      - main

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write
    
jobs:
  # Build job
  build:
    # cf. https://stackoverflow.com/questions/64781462/github-actions-default-branch-variable
    # Run job only on default branch (as $default_branch variable only works on
    # workflow templates)
    if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
        run: |
          npm install
          npm run build
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: '.'

  # Deployment job
  deploy:
    # cf. https://stackoverflow.com/questions/64781462/github-actions-default-branch-variable
    # Run job only on default branch (as $default_branch variable only works on
    # workflow templates)
    if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
