name: Docsite and Storybook CI/CD

run-name: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 'Build and Deploy' || 'Test Build' }} Docsite and Storybook

env:
    NODE_VERSION: 20

on:
    push:
        branches:
            - main
    workflow_dispatch:
    # Also run any time a PR is opened targeting the docs or storybook resources
    pull_request:
        branches:
            - main
        paths:
            - "docs/**"
            - "storybook/**"
            - "**/*.story.*"
            - "**/*.stories.*"
            - ".github/workflows/deploy-docsite.yml"

jobs:
    build:
        name: Build Docsite
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
              with:
                  fetch-depth: 0
            - uses: actions/setup-node@v4
              with:
                  node-version: ${{env.NODE_VERSION}}
            - name: Install yarn
              run: |
                  corepack enable
                  yarn install
            - name: Build docsite
              run: yarn build
              working-directory: docs/

            - name: Build Storybook
              run: yarn build-storybook
            - name: Copy Storybook to docsite output
              run: cp -r storybook-static docs/build/storybook
            - name: Upload Build Artifact
              # Only upload the build artifact when pushed to the main branch
              if: github.event_name == 'push' && github.ref == 'refs/heads/main'
              uses: actions/upload-pages-artifact@v3
              with:
                  path: docs/build
    deploy:
        name: Deploy to GitHub Pages
        # Only deploy when pushed to the main branch
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
        needs: build
        # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
        permissions:
            pages: write # to deploy to Pages
            id-token: write # to verify the deployment originates from an appropriate source

        # Deploy to the github-pages environment
        environment:
            name: github-pages
            url: ${{ steps.deployment.outputs.page_url }}

        runs-on: ubuntu-latest
        steps:
            - name: Deploy to GitHub Pages
              id: deployment
              uses: actions/deploy-pages@v4
