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: IS_OFFICIAL=1 yarn build-storybook # Copy the storybook static site into the docsite output and copy the assets from the main repo into the assets dir of the docsite output. # It needs to be in assets/assets because assets/ gets served from the / root of the site and storybook expects to find assets in /assets/ - name: Copy Storybook to docs run: cp -r storybook-static docs/build/storybook && cp -r assets docs/build/assets/assets - 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